-
cargo new 项目名称 创建一个新项目
-
src 项目源码
-
Cargo.toml 依赖包 类似于pom
-
cargo run 运行项目
-
函数开头是fn
-
println!() 打印
-
println!(“i is {i}”) 序列化
-
let n= 1 建立一个只读参数
-
let mut n =1 创建一个变量
-
let n:u32 =1 创建一个变量 并指定类型
11.1 let guess: u32 = “42”.parse().expect(“Not a number!”); 字符串转 int
- 8b i8 u8 整型
…
128b i128 u128
arch isize usize 如果系统是32位则类似与i32 ,64位则是i64
12 let sum = 1+3 ; 加法
let difference= 3.2-2.2 ; 减法
let multiplication = 4*30 ;乘法
let division = -5/3 ; 除法
let remainder = 32 %3 ;取余
13 浮点型 f32 ,f64
-
bool true false
-
char 字符型 单引号 let a = “a” ; a是字节 let a = “a” ; a是字符串切片
16 fn print_type_of(_: &T) {
println!(“{}”, std::any::type_name::())
}
打印变量类型
17 元组 let tup: (i32, f64, u8) = (500, 6.4, 1);
18 数组 let a = [1,2,3,4]; 不可变长 let a:[i32;5] = [1,2,3,4,5]
19 fn print_labeled_measurement(value: i32, unit_label: char) -> u32 { // 形参:类型 -> 出参类型
}
20 let num = 3;
if num <5 {
println!(“condition was true”);
} else if num<50 {
println!(“condision was 48”);
}else{
println!(“condition was false”);
}
21 fn main() { // loop循环
let mut count = 0;
'counting_up: loop {
println!(“count = {count}”);
let mut remaining = 10;
loop {
println!(“remaining = {remaining}”);
if remaining == 9 {
break;
}
if count == 2 {
break 'counting_up;
}
remaining -= 1;
}
count += 1;
}
println!(“End count = {count}”);
}
22 fn main() {
let mut count = 0;
'counting_up: loop {
println!(“count = {count}”);
let mut remaining = 10;
loop {
println!(“remaining = {remaining}”);
if remaining == 9 {
break;
}
if count == 2 {
break 'counting_up; // break 到标签
}
remaining -= 1;
}
count += 1;
}
println!(“End count = {count}”);
}
23 let a =[1,2,3,4,5]; 遍历列表
for ls in a {
println!(“ls is {ls}”);
}
24 for i in (1…9) { 打印1到 9
println!( "po num {i} " );
}
25 let e = [1,2,3,4,5,6]; 打印整个列表
println!(“list 3… {:?}”,e);
26 println!(“adress {:p}”,e); 打印内存地址
27 let e = [1,2,3,4,5,6]; 数组切片
let ee = &e[2…];
28 struct User { 结构体的定义 与 构建一个 结构体
active: bool,
username: String,
email: String,
sign_in_count: u64,
}
impl User{ 结构体方法
fn add(&self) -> String {
let b:String = self.email.clone();
let a:String = self.email.clone() + &self.username ;
a
}
}
fn main() {
let a_user = User{
active: true,
username:“alanqiu”.to_string()
,email:“111@11.com”.to_string()
,sign_in_count:1,
};
println!(" my name is {} " , a_user.username);
}
29 struct Color(i32, i32, i32); 元组结构体
30 值传递 到另一个作用域 , 当原先的作用域 访问时 会被拒绝
可以使用clone()出一个新的作用域, 或者用指针
31 match a>1 {
true => { println!(“yes”); }
false => {println!(“no”) }
}
let a =1;
match a {
1 => { println!(“yes”); }
0 => {println!(“no”) }
_ => () 其他 情况的分支,空返回
}
32 struct , enum #[derive(Debug)] 加上才能友好打印
33 自定义包 的 属性 前要加pub,如果需要在main中使用
#[derive(Debug)]
pub struct Asparagus {
pub Age :u32,
pub Name :String,
}
34 enum SpreadsheetCell { 自定义一个枚举类 ,vec 就可以装进去
Int(i32),
Float(f64),
Text(String),
}
let row = vec![
SpreadsheetCell::Int(3),
SpreadsheetCell::Text(String::from(“blue”)),
SpreadsheetCell::Float(10.12),
];
35
#[derive(Debug)]
pub struct Stduent {
pub id: usize,
pub name:String
}
#[derive(Debug)]
pub struct Teacher {
pub id: usize,
pub name:String
}
#[derive(Debug)]
enum School{
Stduent(Stduent),
Teacher(Teacher)
}