14.结构体struct.rs
生活随笔
收集整理的這篇文章主要介紹了
14.结构体struct.rs
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//Rust 里 struct 語句僅用來定義,不能聲明實例,結尾不需要 ; 符號,而且每個字段定義之后用 , 分隔#[derive(Debug)]
struct Site {domain: String,name: String,nation: String,found: u32
}fn main() {let runoob = Site {domain: String::from("www.runoob.com"),name: String::from("RUNOOB"),nation: String::from("China"),found: 2013};println!("{:?}",runoob);//必須使用key: value 語法來實現定義// let runoob2 = Site {// String::from("www.runoob.com"),// name: String::from("RUNOOB"),// nation: String::from("China"),// found: 2013// };//但是,如果正在實例化的結構體有字段名稱和現存變量名稱一樣的,可以簡化書寫let domain = String::from("www.runoob.com");let runoob2 = Site {domain,name: String::from("RUNOOB"),nation: String::from("China"),found: 2013};//你想要新建一個結構體的實例,其中大部分屬性需要被設置成與現存的一個結構體屬性一樣,僅需更改其中的一兩個字段的值,可以使用結構體更新語法://注意:..runoob 后面不可以有逗號。這種語法不允許一成不變的復制另一個結構體實例,意思就是說至少重新設定一個字段的值才能引用其他實例的值let runoob3 = Site {nation: String::from("Chinese"),.. runoob2};println!("{:?}",runoob3);//元組結構體//元組結構體是一種形式是元組的結構體。與元組的區別是它有名字和固定的類型格式。它存在的意義是為了處理那些需要定義類型(經常使用)又不想太復雜的簡單數據#[derive(Debug)]struct Color(u8, u8, u8);struct Point(f64, f64);let black = Color(0, 0, 0);let origin = Point(0.0, 0.0);println!("{:?}",black);println!("{}-{}",origin.0,origin.1);let rect1 = Rectangle { width: 30, height: 50 };println!("rect1's area is {}", rect1.area());let rect2 = Rectangle { width: 40, height: 20 };println!("{}", rect1.wider(&rect2));let rect3 = Rectangle::reate(23,32);println!("rect3 is {:?}", rect3);}#[derive(Debug)]
struct Rectangle {width: u32,height: u32,
}//結構體方法
impl Rectangle {fn area(&self) -> u32{self.width * self.height}fn wider(&self, rect: &Rectangle) -> bool {self.width > rect.width}
}//結構體函數(類似C++構造函數)
impl Rectangle {fn reate(width:u32, height:u32) -> Rectangle{Rectangle{width,height}}
}//單元結構體,結構體可以值作為一種象征而無需任何成員:
struct UnitStruct;
?
總結
以上是生活随笔為你收集整理的14.结构体struct.rs的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 13.迭代器.rs
- 下一篇: 15.枚举enum.rs