浙江网站建设网站优化,下载应用商店app下载安装,原平新闻热点头条,中企动力官网 网站文章目录 前言1.使用下划线开头忽略未使用的变量2. 变量解构3.常量4.变量遮蔽#xff08;shadowing#xff09;5. 类似println!({}, x); 为啥加感叹号6.单元类型7. - 运算符到哪去了#xff1f;总结 前言
Rust 学习系列#xff0c;记录一些rust使用小技巧… 文章目录 前言1.使用下划线开头忽略未使用的变量2. 变量解构3.常量4.变量遮蔽shadowing5. 类似println!({}, x); 为啥加感叹号6.单元类型7. - 运算符到哪去了总结 前言
Rust 学习系列记录一些rust使用小技巧 1.使用下划线开头忽略未使用的变量
如果你创建了一个变量却不在任何地方使用它Rust 通常会给你一个警告。这时你希望告诉 Rust 不要警告未使用的变量为此可以用下划线作为变量名的开头
fn main() {let _x 5;let y 10;
}在线运行一下 使用了下划线作为变量名开头的不会警告
2. 变量解构
let 表达式不仅仅用于变量的绑定还能进行复杂变量的解构.
3.常量
常量不允许使用 mut。常量不仅仅默认不可变而且自始至终不可变因为常量在编译完成后已经确定它的值。常量使用 const 关键字而不是 let 关键字来声明并且值的类型必须标注。Rust 常量的命名约定是全部字母都使用大写并使用下划线分隔单词另外对数字字面量可插入下划线以提高可读性
4.变量遮蔽shadowing
在Rust中变量遮蔽shadowing和mut关键字有一些区别。
变量遮蔽是指在同一个作用域中使用相同的名称定义一个新的变量从而遮蔽之前定义的同名变量。这意味着新定义的变量会覆盖之前的变量并且可以改变变量的类型。例如
let x 5;
let x hello;
println!({}, x); // 输出 hello在上面的例子中变量x被遮蔽了两次首先定义为整数类型然后定义为字符串类型。每次定义都创建一个新的变量并且新变量的作用域覆盖了之前变量的作用域。
而mut关键字用于声明一个可变变量。在使用mut声明的变量中可以改变变量的值但是不能改变变量的类型。例如
let mut x 5;
x 10;
println!({}, x); // 输出 10在这个例子中变量x被声明为可变变量并且可以通过赋值语句改变它的值。但是由于变量的类型在声明时已经确定所以不能改变其类型。
变量遮蔽shadowing允许在同一个作用域内使用相同名称的变量并且可以改变变量的类型而mut关键字只允许改变变量的值但不能改变变量的类型。
5. 类似println!(“{}”, x); 为啥加感叹号
在Rust中感叹号!通常用于调用宏macro。println!是一个宏的示例它可以将文本打印到标准输出。 使用感叹号的目的是告诉编译器这是一个宏调用而不是普通函数调用。这是为了区分宏和函数因为它们在语法和执行方式上有很大的不同。
6.单元类型
单元类型就是 () 对你没看错就是 () 唯一的值也是 () 大家已经看到过很多次 fn main() 函数的使用吧那么这个函数返回什么呢
没错 main 函数就返回这个单元类型 ()你不能说 main 函数无返回值因为没有返回值的函数在 Rust 中是有单独的定义的发散函数( diverge function )顾名思义无法收敛的函数。
例如常见的 println!() 的返回值也是单元类型 ()。
再比如你可以用 () 作为 map 的值表示我们不关注具体的值只关注 key。 这种用法和 Go 语言的 struct{} 类似可以作为一个值用来占位但是完全不占用任何内存。
这里估计也是单元类型。
7. - 运算符到哪去了
- 运算符到哪去了 在 C/C 语言中有两个不同的运算符来调用方法. 直接在对象上调用方法而 - 在一个对象的指针上调用方法这时需要先解引用指针。换句话说如果 object 是一个指针那么 object-something() 和 (*object).something() 是一样的。
Rust 并没有一个与 - 等效的运算符相反Rust 有一个叫 自动引用和解引用的功能。方法调用是 Rust 中少数几个拥有这种行为的地方。
他是这样工作的当使用 object.something() 调用方法时Rust 会自动为 object 添加 、mut 或 * 以便使 object 与方法签名匹配。也就是说这些代码是等价的
p1.distance(p2);
(p1).distance(p2);第一行看起来简洁的多。这种自动引用的行为之所以有效是因为方法有一个明确的接收者———— self 的类型。在给出接收者和方法名的前提下Rust 可以明确地计算出方法是仅仅读取self做出修改mut self或者是获取所有权self。事实上Rust 对方法接收者的隐式借用让所有权在实践中更友好。 总结
参考 Rust 学习书籍