安装Rust
创建Rust项目
#cargo new 项目名
cargo new project
打开src/main.rs
,打开控制台
编译Rust
cargo build
运行Rust
cargo run
windows Rust编译成可执行文件(.exe)
rustc .rs文件路径
初步认识Rust
基础数据类型
对于学习过
javascript
的人来说比较好懂
let a = 123;
println!("a is {}",a)
注意:a不能是
a="123";a=12.3;a=345
- 第一行的错误在于当声明 a 是 123 以后,a 就被确定为整型数字,不能把字符串类型的值赋给它。
- 第二行的错误在于自动转换数字精度有损失,Rust 语言不允许精度有损失的自动数据类型转换。
- 第三行的错误在于 a 不是个可变变量。这就牵扯到了 Rust 语言为了高并发安全而做的设计:在语言层面尽量少的让变量的值可以改变。所以 a 的值不可变。但这不意味着 a 不是"变量"(英文中的 variable),官方文档称 a 这种变量为"不可变变量"。
使变量变得"可变"(mutable)只需一个mut
关键字
let mut a = 123;
a = 456;
println!("a is {}",a);
虽然 Rust 有自动判断类型的功能,但有些情况下声明类型更加方便
let a: u64 = 123;
整数型(Integer)
整数型简称整型,按照比特位长度和有无符号分为以下种类:
位长度 | 有符号 | 无符号 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch isize | usize |
浮点数型(Floating-Point)
Rust 与其它语言一样支持 32 位浮点数(f32)和 64 位浮点数(f64)。默认情况下,64.0 将表示 64 位浮点数,因为现代计算机处理器对两种浮点数计算的速度几乎相同,但 64 位浮点数精度更高。
实例
fn main() {
let x = 2.0; // f64
let y: f32 = 3.0; // f32
}
函数
fn 函数名 ( 参数 ) 函数体{}
举例(有返回值)
//没有返回值
fn main(){
let test1:i16 = test(10,12);
}
//有返回值
fn test(a:i16,b:i16) -> i16{
return a + b;
}
c中是
/*
int testSum(int a,int b){
return a + b;
}
int main(){
int sum = testSum(10,15);
return 0;
}
*/
//函数申明
int testSum(int a,int b);
int main(){
int sum = testSum(10,15);
return 0;
}
int testSum(int a,int b){
return a + b;
}
Rust 条件语句
let number:u16 = 3;
if number < 3 {
println!("条件:true")
}else{
println!("条件:false")
}
else-if
let number:u16 = 3; if number < 3 { println!("条件:true") }else if number = 3{ println!("条件:false") }else{ println!("条件:123") }
Rust循环
Rust中的循环还是
while
和for
俩个关键字
while true{}
最好不要使以上写法,可以是加一个结束条件作为循环结束的一个标志
//while 循环结束条件{}
let mut number:i16 = 0;
while number < 10{
number += 1;
}
for i in 0..5 { //>=0;<5
println!("i is {}",i)
}
let a = [10, 20, 30, 40, 50];
for i1 in a.iter() {
println!("值为 : {}", i1);
}
Rust
中还有一种循环,是代替了while true
那就是loop
let mut number:i16 = 0;
loop {
number += 1;
if number > 15 {
break;
}
}
Rust 迭代器
使用
iter()
方法创建借用迭代器
fn TestWhile(){
let array: [i32; 6] = [1,2,3,4,5,6];
let iter = array.iter();
for i in iter{
println!("iter is {}",i);
if iter[2] == 3 { //x
iter[3] = 10; //x
}
}
}
会报错,原因:不可变
使用
iter_mut()
方法创建可变借用迭代器(修改其中的变量)
fn TestWhile(){
let mut array = [1,2,3,4,5,6];
let mut iter = array.iter_mut(); //iter
// 假设我们想要访问第一个元素
let first = iter.next().unwrap();
*first = 10;
println!("*first valuse is {:?}",array)
}