- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
Mac安装rust环境
- 安装:
curl https://sh.rustup.rs -sSf | sh - 编译:
source $HOME/.cargo/env - rust版本查看:
rustc --version - cargo安装包版本查看:
cargo --version
语法基础
- hello word
fn main() {
let s = "hello word!";
println!("{}",s);
}
- 局部变量使用
let定义 - 在rus中,声明对象时只读的(默认),如下图就会报错
- 此时的x是只读的
- 此时的x是只读的
- 如果要是想实现如上图的思路那么必须要使用
mut
fn main() {
let mut s = 5;
s = 10;
print!("{}",s);
}
- 也可这样赋值
- 也可以先声明再赋值
fn main() {
let x: i32;
x = 1;
println!("{}",x);
}
- 针对下面情况,x不属于被赋值,而是重新定义变量
fn main() {
let x = 1;
let x = "new";
println!("{}",x);
}
- rust np之处
- 实现类型推导
- 编译器知道了
x的类型是u8类型
fn main() {
let x = 5u8;
let mut vec = Vec::new();
vec.push(x);
println!("{:?}",vec); // 输出 5
}
- 类型别名
- 可以用 type关键字给同一个类型起个别名
fn main() {
let x : Age = 20; // x为Age类型
// 输出:20 years later: 40
println!("20 years later: {}",add(x,20));
}
// Age 是u32类型
type Age = u32;
fn add(age: Age,year: u32) -> Age {
age + year
}
- 一些基础类型
fn main() {
let a : bool = true;
let b : char = '❤';
let varl : i32 = 32; // 十进制
let var2 : i32 = 0xFF; // 0x十六进制
let var3 : i32 = 0o55; // 0o八进制
let var4 : i32 = 0b1001; // 0b二进制表示
let f1 = 1.234;
let f2 = 1E+2; // 科学计数法 输出100
println!("{}",f2);
}
-
强转类型
- 下面这种是报错的
- 因为
rust必须要显式的强转换类型
-
下面这种显式的才是正确的做法
fn main() {
let v1 : i8 = 41;
let v2 : i16 = v1 as i16;
println!("{}",v2); // 输出41
}