rust里面的可变变量是固定类型的
比如
fn main() {
let mut a = 1;
println!("a={}", a);
a = 2;
println!("a={}", a);
let mut b = "123";
println!("b={}", b);
b = 3;
println!("b={}", b);
}
a这样改是没问题的,因为是同一个类型
b这样改是不行的,因为刚开始是&str,后面是数字,不行
fn main() {
let mut a = 1;
println!("a={}", a);
a = 2;
println!("a={}", a);
let mut b = "123";
println!("b={}", b);
b = "abc";
println!("b={}", b);
}
这样是可以的,前后都是&str
fn main() {
let a = "abc";
println!("a: {}", a);
let a = a.len();
println!("a: {}", a);
}
这样是可以的
这里并不是2个a,而是shadow
然后来说一下函数
fn main() {
let a = plus_five(10);
println!("{}", a);
}
fn plus_five(a: i32) -> i32 {
a + 5;
}
fn plus_five(a: i32) -> i32 {
a + 5
}
如果是返回值,后面不能加分号
因为加了分号,就是一个语句了
不加分号,就是返回值的表达式
然后来试一下循环
rust里面有3种循环,loop,while,for
先来看看loop
fn main() {
let mut a = 0;
loop {
if a >= 10 {
break;
}
a += 1;
println!("{}", a);
}
}
然后来看下while
fn main() {
let mut a = 0;
while a < 10 {
a += 1;
println!("{}", a);
}
}
然后来看下for
fn main() {
let arr=[1,2,3,4,5,6,7,8,9,10];
for item in arr.iter() {
println!("{} ", item);
}
}
再来看下range
fn main() {
for item in 1..11 {
println!("{}", item);
}
}
再来看下range的rev
fn main() {
for item in (1..11).rev() {
println!("{}", item);
}
}