赞
踩
struct user{
name:String,
email:String,
active:bool,
}
//注意最后一项也有逗号
实例化时要为每个字段赋值,顺序不用按照声明顺序
struct student{
name:String,
age:i64,
active:bool,
}
let xh=student{
name:String::from("xiaohong"),
age:66,
active:true,
};
当字段名与字段值对应变量名相同时,就可以使用字段初始化简写的方式
其中的…user1 表明所有未赋值的成员都采用user1的数据进行赋值
struct r(u32,u32);
let r1=r(3,6);
fn test(re:r)-> u32{
re.0*re.1
}
适用于在某个类型中仅实现接口
fn main() {
#[derive(Debug)]
struct student{
name:String,
age:i64,
active:bool,
}
let xh=student{
name:String::from("xiaohong"),
age:66,
active:true,
};
println!("{:#?}",xh);
}
方法和函数类似:fn关键字、名称、参数、返回值
方法与函数的不同之处:
- 方法是在struct(或 enum、trait 对象)的上下文中定义 - 第一个参数是self,表示方法被调用的struct实例 - ` #[derive(Debug)] struct reac{ x:u32, y:u32, } impl reac{ fn area(&self)->u32{ self.x*self.y } } let r= reac{ x:6, y:9, }; println!("{}",r.area());`
enum ipaddr{
V4,
V6,
}
let four=ipaddr::V4;
let six=ipaddr::V6;
定义于标准库中
在prelude(预导入模块中)
描述了:某个值可能存在(某种类型)或不存在的情况
None,
Some(T)
None
fn plus_one(x:Option<i32>)->Option<i32>{
//match必须穷举所有的类型
//没有none会报错
match x{
None=>None,
Some(i)=>Some(i+1)
}
}
flus plus_one(x:u8)->u8{
match x{
1=>1,
2=>2,
3=>3,
_=>()//枚举其他所有情况
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。