创建一个变量
rust创建变量,可以选择类型推导式创建变量,也可以选择标注类型式创建变量:
let x = 5;
println!("x is {}",x);
let x:u32 = 5;
println!("x is {}",x);
通过let创建的变量不可更改,但可以通过重新let x = x+1 来复用,若想简单的修改变量,可以使用let mut 来初始化变量
let x = 5;
x = 6;
let mut y = 5;
y = 6;
其中,x = 6 编译不会通过
error[E0384]: cannot assign twice to immutable variable `x`
--> src\main.rs:6:5
|
3 | let x = 5;
| -
| |
| first assignment to `x`
| help: make this binding mutable: `mut x`
...
6 | x = 6;
| ^^^^^ cannot assign twice to immutable variable
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0384`.
error: could not compile `hello`.
最简单的debug:println!
在rust中,print的方法需要注意
let mut x = 5;
println!("x is {}",x);
x = 6;
println!("x is {}",x);
怎么看怎么觉得这个!很别扭
格式化一个字符串,或者数字等变量,使用{},格式化输出一个数组或元组,使用{:?}
let x = 5;
println!("x is {}",x);
let pat: u32 = "32".parse().expect("not a num");
println!("pat is {}",pat);
let a = [3;5];
println!("arr {:?}",a);
let b = (1,2,3);
println!("{:?}",b)
方法
rust 使用fn作为方法的关键字传入参数方式与其他编译语言一样
fn main() {
hello(5)
}
fn hello(x: u32){
println!("x is {}",x);
}
注意!
在方法hello中,作为参数传递的x,仍然是不可变的。若想要一个可修改的x,需要增加mut标识:
fn main() {
hello(5)
}
fn hello(mut x: u32){
println!("x is {}",x);
x = x+1;
println!("x is {}",x);
}
返回值
其返回值的定义方式与go和java不一样,类似于python的返回类型指定,同时返回值作为最后一行不带**;**:
fn main() {
let z = hello(5);
println!("{}",z);
}
fn hello(mut x: u32) -> u32{
println!("x is {}",x);
x = x+1;
println!("x is {}",x);
x //这里的x不带分号,作为返回值
}
匿名函数
可以通过{}来创建简单的函数,例如:
let y = {
let x = 3;
x + 1
};
println!("{}",y)
if
rust中的if与go的if,else if,else写法上并没有什么不同,需要注意的是:rust中if仅直接判断一个bool类型,并不像python与js一样可以判断是否为空
fn main() {
let number = 6;
if number % 4 == 0 {
println!("number is divisible by 4");
} else if number % 3 == 0 {
println!("number is divisible by 3");
} else if number % 2 == 0 {
println!("number is divisible by 2");
} else {
println!("number is not divisible by 4, 3, or 2");
}
}
但以下使用会在编译时报错:
fn main() {
let number = 3;
if number {
println!("number was three");
}
}
循环
Rust 有三种循环:loop、while 和 for
for和while就不写了,用法差不多,其中loop是一个无限循环,可以通过break退出:
fn main() {
loop {
println!("again!");
}
}
loop可以通过break来返回数据:
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {}", result);
}