Rust语法速查表 您所在的位置:网站首页 rust语法解析 Rust语法速查表

Rust语法速查表

2024-07-02 18:25| 来源: 网络整理| 查看: 265

Rust语法速查表 Rust语法速查表

语法汇总和速查表。

基本语法 类型 let a = 1; // 定义变量,默认不可变 let b: bool = true; // 明确指定变量类型 let mut x = 5; // 定义可变变量 const MAX_POINTS: u32 = 100_000; // 定义常量 let i:i32 = _f as i32; // 转数据类型 type Int = i32; // 用关键字 type 为i32类型创建别名Int // Rust 的 never 类型( ! )用于表示永远不可能有返回值的计算类型。 #![feature(never_type)] let x:! = { return 123 }; // 对整行进行注释 /* .. 对区块注释 */ /// 生成库文档,一般用于函数或者结构体的说明,置于说明对象的上方 //! 也生成库文档,一般用于说明整个模块的功能,置于模块文件的头部 let tup: (i32, f64, u8) = (500, 6.4, 1); // 元组(tuple) let (x, y, z) = tup; // 模式匹配(pattern matching)来解构元组值 (1,) // 当元组中只有一个元素时,需要加逗号,即 `()` // 空元组, let arr: [i32; 3] = [1, 2, 3]; // 数组 assert_eq!((1..5), Range{ start: 1, end: 5 }); // 范围类型,左闭右开 assert_eq!((1..=5), RangeInclusive::new(1, 5)); // 范围类型,全闭 let arr: [i32; 5] = [1, 2, 3, 4, 5]; // 固定大小数组的切片 let arr = &mut [1, 2, 3]; // 可变数组的切片 let vec = vec![1, 2, 3]; // 使用 vec! 宏定义的动态数组的切片 let str_slice: &[&str] = &["one", "two", "three"]; // 字符串数组的切片 pub struct People { // Named-Field Struct name: &'static str, gender: u32, } // 注意这里没有分号 let alex = People::new("Alex", 1); // 用 :: 来调用new方法,默认不可变 struct Color(i32, i32, i32); // 注意这里要有分号! Tuple-Like Struct,字段没有名字,只有类型 let color = Color(0, 1, 2); // 直接构造,不用new方法 struct Integer(u32); // 当元组结构体只有一个字段的时候,称为 New Type 模式 struct Empty; // 等价于 struct Empty {},单元结构体是没有任何字段的结构体。 enum Number { // 无参数枚举 Zero, One, Two, } enum Color { // 类C枚举 Red = 0xff0000, Green = 0x00ff00, Blue = 0x0000ff, } enum IpAddr { // 带参数枚举 V4(u8, u8, u8, u8), V6(String), } let mut v1 = vec![]; // 用宏创建可变向量 let v2 = vec![0; 10]; // 用宏创建不可变向量 let mut v3 = Vec::new(); // 用 new 方法创建向量 let a = [1,2,3]; let b = &a; // 引用操作符 &,不可变,本质上是一种非空指针 let mut c = vec![1,2,3]; // 要获取可变引用,必须先声明可变绑定 let d = &mut c; // 通过 &mut 得到可变引用 let mut x = 10; let ptr_x = &mut x as *mut i32; // 可变原始指针 *&mut T let y = Box::new(20); let ptr_y = &*y as *const i32; // 不可变原始指针 *const T pub fn math(op: fn(i32, i32) -> i32, a: i32, b: i32) -> i32{ /// 将函数作为参数传递 op(a, b) /// 通过函数指针调用函数 } fn true_maker() -> fn() -> bool { is_true } /// 函数的返回值是另外一个函数 let box_point = Box::new(Point { x: 0.0, y: 0.0 }); // 智能指针 流程处理 let big_n = if n -10 { // if 不带括号,真不适应 10 * n } else { n / 2 }; for n in 1..101 {} // for … in 循环 while n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有