首页 > 其他分享 >Rust 中的关键字以及示例

Rust 中的关键字以及示例

时间:2024-09-05 14:46:56浏览次数:10  
标签:function struct 示例 pub 关键字 let Rust println fn

1. 常见关键字

  • as: 用于类型转换,例如将一个值从一种类型转换为另一种类型。
let x: i32 = 42;
let y: u8 = x as u8;
  • break: 用于提前退出循环。
for i in 0..10 {
    if i == 5 {
        break;
    }
}
  • const: 定义一个常量,常量的值在编译时就确定,不会在运行时改变。
const MAX_POINTS: u32 = 100_000;
  • continue: 跳过当前循环中的剩余部分,直接进入下一次循环迭代。
for i in 0..10 {
    if i % 2 == 0 {
        continue;
    }
    println!("{}", i);
}
  • crate: 表示当前包或库的根模块,通常用于定义或引用其他模块。
pub fn my_function() {
    println!("This is a function in the crate root.");
}
  • else: 与 if 搭配使用,表示条件不满足时执行的代码块。
if x > 5 {
    println!("Greater than 5");
} else {
    println!("Not greater than 5");
}
  • enum: 定义一个枚举类型,它可以包含多个不同类型的变体(variants)。
enum Direction {
    Up,
    Down,
    Left,
    Right,
}
  • extern: 用于外部函数或变量的声明,通常用于与 C 语言的交互。
extern "C" {
    fn printf(format: *const u8, ...) -> i32;
}
  • false: 布尔值字面值。
let a = false;
  • fn: 定义一个函数。
fn my_function() {
    println!("Hello, world!");
}
  • for: 用于循环,通常与迭代器结合使用。
for i in 0..5 {
    println!("{}", i);
}
  • if: 条件语句,根据表达式的真假选择执行的代码块。
if x > 5 {
    println!("Greater than 5");
}
  • impl: 实现一个 trait 或为一个类型实现方法。
struct MyStruct;

impl MyStruct {
    fn new() -> MyStruct {
        MyStruct
    }
}
  • in: for 循环语法。
for i in vec![1,2,3] {
    println!("{}", i);
}
  • let: 绑定一个值到变量。
let x = 5;
  • loop: 定义一个无限循环,可以用 break 退出循环。
loop {
    println!("This will print forever!");
    break; // Exit the loop
}
  • match: 模式匹配,类似于 switch/case 语句。
match x {
    1 => println!("One"),
    2 => println!("Two"),
    _ => println!("Something else"),
}
  • mod: 定义一个模块,模块是代码的组织单位。
mod my_module {
    pub fn my_function() {
        println!("Hello from the module!");
    }
}
  • move: 使闭包获取其捕获项的所有权,而不是借用。
let x = vec![1, 2, 3];
// 使用 move 将 x 的所有权移动到闭包中
let equal_to_x = move |z| z == x;
// 此时 x 已经被移动到闭包中,不能在此处再访问 x
// println!("{:?}", x); // 这行代码会报错
  • mut: 标记一个变量是可变的。
let mut x = 5;
x = 6;
  • pub: 公开一个模块、函数或变量,使其可以从其他模块访问。
pub fn public_function() {
    println!("This function is public!");
}
  • return: 从函数返回一个值。
fn my_function() -> i32 {
    return 5;
}
  • Self: 定义或实现 trait 的类型的类型别名。
impl Rectangle {
    fn new(width: u32, height: u32) -> Self {
        Self { width, height } // `Self` 指代 `Rectangle`
    }
}
  • self: 表示方法本身或当前模块。
struct Rectangle {
    width: u32,
    height: u32,
}
impl Rectangle {
    fn area(&self) -> u32 {
        self.width * self.height // `self` 指代 `Rectangle` 的实例
    }
}
  • static: 表示全局变量或在整个程序执行期间保持其生命周期。
static HELLO: &str = "Hello, world!";
let s: &'static str = "Hello, world!";
  • struct: 定义一个结构体。
struct MyStruct {
    field1: i32,
    field2: f64,
}
  • super: 表示当前模块的父模块。
mod parent {
    pub struct ParentStruct {
        pub name: String,
    }
    pub fn hello() {
        println!("Hello from parent module");
    }
    pub mod child {
        pub fn create_parent_struct(name: &str) -> super::ParentStruct {
            super::ParentStruct { name: name.to_string() } // 访问父模块中的结构体
        }
        pub fn hello_from_child() {
            super::hello(); // 使用 `super` 访问父模块中的 `hello` 函数
        }
    }
}

fn main() {
    parent::child::hello_from_child();
    let parent_struct = parent::child::create_parent_struct("Rust");
    println!("Created ParentStruct with name: {}", parent_struct.name);
}
  • trait: 定义一组方法的集合,类似于接口。
trait MyTrait {
    fn do_something(&self);
}
  • true: 布尔值字面值。
let bool = true;
  • use: 导入一个模块、类型或函数到当前作用域。
use std::collections::HashMap;
  • where: 为泛型或类型约束指定条件。
fn my_function<T>(x: T) where T: std::fmt::Display {
    println!("{}", x);
}
  • while: 定义一个循环,当条件为真时继续执行。
while x < 10 {
    x += 1;
}

2. 特殊关键字

  • unsafe: 用于声明一个不安全的代码块,允许执行一些通常被禁止的操作,例如解引用裸指针。
let p: *const i32 = &10;
unsafe {
    println!("p points to: {}", *p);
}
  • async: 用于定义一个异步函数,返回一个 Future
async fn my_async_function() {
    // asynchronous code
}
  • await: 等待一个异步操作完成。
my_async_function().await;
  • dyn: 用于动态分发,实现类似于面向对象语言中的多态性。
fn my_function(p: &dyn MyTrait) {
    p.do_something();
}
  • ref: 引用模式匹配中的值。
let tuple = (42, "hello");
let (x, ref y) = tuple;
  • type: 定义一个类型别名。
type Kilometers = i32;
  • union: 定义一个联合体,允许一个数据结构在同一位置存储不同类型的数据。
union MyUnion {
    i: i32,
    f: f32,
}

3. 保留但未使用的关键字

这些关键字在当前 Rust 版本中没有使用,但它们可能在将来被采用,因此不能作为标识符使用:

  • abstract
  • become
  • box
  • do
  • final
  • macro
  • override
  • priv
  • try
  • typeof
  • unsized
  • virtual
  • yield

标签:function,struct,示例,pub,关键字,let,Rust,println,fn
From: https://www.cnblogs.com/risheng/p/18398408

相关文章

  • 基于SpringBoot的高校宿舍管理系统+LW参考示例
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于SpringBoot的电影院订票系统+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于云函数的自习室预约微信小程序+LW示例参考
    全阶段全种类学习资源,内涵少儿、小学、初中、高中、大学、专升本、考研、四六级、建造师、法考、网赚技巧、毕业设计等,持续更新~文章目录@[TOC](文章目录)1.项目介绍2.项目部署3.项目部分截图4.获取方式1.项目介绍技术栈+工具:云数据库+云函数+JS+原生微信小......
  • 神经网络之卷积篇:详解卷积神经网络示例(Convolutional neural network example)
    详解卷积神经网络示例假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片,想做手写体数字识别。32×32×3的RGB图片中含有某个数字,比如7,想识别它是从0-9这10个数字中的哪一个,构建一个神经网络来实现这个功能。用的这个网络模型和经典网络LeNet-5非常相似,灵感也来源于此......
  • 海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust认证
      一、认证简介:     Cyber Trust标志是针对数字化业务运营更为广泛的组织的网络安全认证。该标志针对的是规模较大或数字化程度较高的组织,因为这些组织可能具有更高的风险水平,需要他们投资专业知识和资源来管理和保护其IT基础设施和系统。CyberTrust标志采用基......
  • MySQL零基础入门教程-5 单行处理函数、分组函数、mysql关键字执行顺序,基础+实战
     教程来源:B站视频BV1Vy4y1z7EX001-数据库概述_哔哩哔哩_bilibili我听课整理的课程的完整笔记,供大家学习交流下载:夸克网盘分享本文内容为完整笔记的第五篇17、单行数据处理函数P30-36&分组函数17.1、数据处理函数又被称为单行处理函数单行处理函数的特点:一个输入对应一个......
  • 海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust
    一、认证简介:     Cyber Trust标志是针对数字化业务运营更为广泛的组织的网络安全认证。该标志针对的是规模较大或数字化程度较高的组织,因为这些组织可能具有更高的风险水平,需要他们投资专业知识和资源来管理和保护其IT基础设施和系统。CyberTrust标志采用基......
  • 字典元素的访问示例
    '''可以对字典对象进行迭代或者遍历,默认是遍历字典的键,如果需要遍历字典的元素必须使用字典对象的items()方法明确说明,如果需要遍历字典的值则必须使用字典对象的values()方法明确说明'''Dict={'age':18,'name':'Zheng','sex':'male'}#遍历输出字典的键foriteminDict:  ......
  • java常用关键字
    类别关键字说明访问控制private私有的protected受保护的public公共的default默认类、方法和变量修饰符abstract声明抽象class类extends扩充、继承final最终值、不可改变的implements实现(接口)interface接口native本地、原......
  • 决策树之——C4.5算法及示例
    0前言本文主要讲述了决策树C4.5算法构建原理并举例说明。读者需要具备的知识有:信息熵、条件熵、信息增益、信息增益比。本文所使用的数据集为:西瓜数据集1.2节。1C4.5算法流程准备数据集:输入数据集包含多个样本,每个样本具有多个特征(属性)和一个目标类别标签。设置阈......