rust 学习 2
1. 源文件格式:后缀.rs, 源码格式UTF-8
2. 注释: // 行注释
/* */ 块注释
/// 文档行注释 现阶段用不着 ,想看例子可以参考 https://kaisery.github.io/trpl-zh-cn/ch14-02-publishing-to-crates-io.html
//! 文档块注释 现阶段用不着 ,想看例子可以参考 https://kaisery.github.io/trpl-zh-cn/ch14-02-publishing-to-crates-io.html
2.函数格式 fn main( a : i32, b : u32) -> i32 { /* xxxxx*/}
打印输出的2个宏 println!() 和 print!()
fn main() { let a = 12; println!("a is {}", a); }
println! 格式打印,不用记,现在不熟,照着抄几遍就熟了,后面不记得翻翻就行
3. 变量
let a : i32 = 100; 也可以让编译器自己推导类型 let a = 100;
let a = 100; a = 200; // 错误,不能修改
let mut x = 100; x = 200; 正确 , mut修饰就能改变了
let (mut a, mut b) = (1, 2);
let Point { x: ref a, y: ref b} = p;
变量使用前一定要初始化
变量遮蔽,不同类型的变量可以起同一个名字
fn main() { let x = "hello"; println!("x is {}", x); let x = 5; println!("x is {}", x); }
4. 变量类型
isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型
RUST不支持++,--
布尔类型:bool true或者fase
字符类型 :char 大小4个字节
5. 元组, 用()包括起来的类型
let tup: (i32, f64, u8) = (500, 6.4, 1); // tup.0 等于 500 // tup.1 等于 6.4 // tup.2 等于 1 let (x, y, z) = tup; // y 等于 6.4
6. 数组,[] 包括起来的相同类型
let a = [1, 2, 3, 4, 5]; // a 是一个长度为 5 的整型数组 let b = ["January", "February", "March"]; // b 是一个长度为 3 的字符串数组 let c: [i32; 5] = [1, 2, 3, 4, 5]; // c 是一个长度为 5 的 i32 数组 let d = [3; 5]; // 等同于 let d = [3, 3, 3, 3, 3]; let first = a[0]; let second = a[1]; // 数组访问 a[0] = 123; // 错误:数组 a 不可变 let mut a = [1, 2, 3]; a[0] = 4; // 正确
7 表达式与语句
语句是执行某些操作且没有返回值的步骤
let a = 10; 语句
表达式有计算步骤且有返回值
fn main() { let x = 5; let y = { let x = 3; x + 1 // 不要加 ; 这是表达式 }; println!("x 的值为 : {}", x); println!("y 的值为 : {}", y);
}
8 条件判断
fn main() { let a = 3; let number = if a > 0 { 1 } else { -1 }; println!("number 为 {}", number); }
9 循环
有while,有基于范围的for循环,没有三段式for循环for(a,b,c),没有do { }while,新增加了loop
fn main() { let s = ['R', 'U', 'N', 'O', 'O', 'B']; let mut i = 0; loop { let ch = s[i]; if ch == 'O' { break; } println!("\'{}\'", ch); i += 1; } }
fn main() {
let s = ['R', 'U', 'N', 'O', 'O', 'B'];
let mut i = 0;
let location = loop {
let ch = s[i];
if ch == 'O' {
break i; // 注意是break i,因为要赋值给location
}
i += 1;
};
println!(" \'O\' 的索引为 {}", location);
}
部分内容来自于菜鸟教程 https://www.runoob.com/rust/rust-tutorial.html