Rust语言——定义和实例化

  • struct结构体

使用struct关键字,并为整个struct命名

在花括号内,为所有字段定义名称和类型

//创建结构体
struct User{
    username:String,
    email:String,
    sign:u64,
    active:bool,
}
fn main(){
    
}

实例化struct

struct User{
    username:String,
    email:String,
    sign:u64,
    active:bool,
}
fn main(){
    let mut user1 = User{//内部赋值顺序可以改变 但是每个元素都要赋值
        email:String::from("[email protected]"),
        username:String::from("xzc"),
        sign:5,
        active:true,
    };
}
user1.email = String::from("hello");
println!("{}", user1.email);//点标记法取得struct中某个值
  • Tuple struct
    struct color(i32, i32);
    struct point(i32, i32);
    let c = color(0, 0);//但c和p是不同的类型,因为来自不同的tuple struct实例
    let p = point(0, 0);
  • struct实战

 计算长方形的面积

#[derive(Debug)]//为struct的输出选择方式
struct rectangle{
    length:u32,
    width:u32,
}
fn main(){
    let mut rect = rectangle{
        length:10,
        width:20,
    };
    println!("{:#?}", rect);//输出struct类型的实例{:?}和{:#?}相似
    println!("area is {}", area(&rect));
}
fn area(rect:&rectangle)->u32{
    rect.length*rect.width
}
  • struct的方法

方法和函数类似:fn关键字、名称、参数、返回值

 例子:

impl rectangle{//为struct定义方法
    fn area(&self)->u32{
        self.length*self.width
    }
}
println!("area is {}", rect.area());//调用struct函数
  • 关联函数

关联函数不同于方法

#[derive(Debug)]
struct rect{
    length:u32,
    width:u32,
}
fn main(){
    let s = rect::square(30);//调用关联函数
    println!("{:#?}", s);
}
impl rect{
    fn area(&self)->u32{
        self.length*self.width
    }
    //此处定义关联函数(在方法里)
    fn square(size:u32)->rect{//不需要&self 调用时用::
        rect{
            length:size,
            width:size,
        }
    }
}

 

你可能感兴趣的:(rust,开发语言,后端)