????????在 Rust 中,struct
是一種用于創(chuàng)建自定義數(shù)據(jù)類型的關(guān)鍵字,它允許你定義和組織數(shù)據(jù)的結(jié)構(gòu)。struct
可以包含多個不同類型的字段(fields),每個字段都有一個名稱和一個類型。
定義結(jié)構(gòu)體
????????下面是一個簡單的例子,展示了如何定義和使用 struct
:
// 定義一個結(jié)構(gòu)體
struct Point {
x: f64,
y: f64,
}
// 使用結(jié)構(gòu)體
fn main() {
// 創(chuàng)建 Point 結(jié)構(gòu)體的實例
let origin = Point { x: 0.0, y: 0.0 };
// 訪問結(jié)構(gòu)體的字段
println!("X coordinate: {}", origin.x);
println!("Y coordinate: {}", origin.y);
// 創(chuàng)建可變的結(jié)構(gòu)體實例,并修改字段的值
let mut point = Point { x: 5.0, y: 10.0 };
point.x = 7.0;
// 結(jié)構(gòu)體的解構(gòu)
let Point { x, y } = point;
println!("X: {}, Y: {}", x, y);
}
元組結(jié)構(gòu)體(Tuple Structs):
????????Rust 還支持一種特殊的結(jié)構(gòu)體,稱為元組結(jié)構(gòu)體。它們類似于元組,但有一個具體的命名。
// 元組結(jié)構(gòu)體
struct Color(u8, u8, u8);
fn main() {
// 創(chuàng)建 Color 元組結(jié)構(gòu)體的實例
let red = Color(255, 0, 0);
// 訪問元組結(jié)構(gòu)體的字段
println!("Red component: {}", red.0);
}
????????在這個例子中,Color
是一個元組結(jié)構(gòu)體,有三個字段,分別表示 RGB 顏色的三個分量。通過 (255, 0, 0)
創(chuàng)建了一個紅色的實例,并通過 .0
訪問了第一個字段。
類單元結(jié)構(gòu)體(Unit-like Structs):
????????有時候,一個結(jié)構(gòu)體不包含任何字段,這種結(jié)構(gòu)體被稱為類單元結(jié)構(gòu)體。
// 類單元結(jié)構(gòu)體
struct EmptyStruct;
fn main() {
// 創(chuàng)建類單元結(jié)構(gòu)體的實例
let empty = EmptyStruct;
// 無字段可訪問
}
????????這是一個非常簡單的例子,但有時候類單元結(jié)構(gòu)體用于實現(xiàn)某種特定的 trait,或者作為類型標(biāo)記的一部分。
可變性
如果結(jié)構(gòu)體的某個字段需要被修改,需要將結(jié)構(gòu)體聲明為可變的。可變性在 Rust 中是默認(rèn)不可變的,因此如果要修改結(jié)構(gòu)體的字段,需要使用 mut
關(guān)鍵字。
struct MutableStruct {
value: i32,
}
impl MutableStruct {
fn modify_value(&mut self, new_value: i32) {
self.value = new_value;
}
}
fn main() {
let mut my_struct = MutableStruct { value: 42 };
my_struct.modify_value(10);
println!("Modified value: {}", my_struct.value);
}
作為函數(shù)返回值
簡寫初始化
更新語法
struct Point {
x: f64,
y: f64,
}
fn main() {
let p1 = Point { x: 1.0, y: 2.0 };
// 使用更新語法創(chuàng)建新的結(jié)構(gòu)體實例
let p2 = Point { x: 3.0, ..p1 };
println!("p2.x: {}", p2.x); // 輸出: 3.0
println!("p2.y: {}", p2.y); // 輸出: 2.0 (來自于 p1)
}
在這個例子中,Point { x: 3.0, ..p1 }
創(chuàng)建了一個新的 Point
實例 p2
,其中 x
被更新為 3.0,而 y
則繼承自現(xiàn)有實例 p1
。
方法
文章來源:http://www.zghlxwxcb.cn/news/detail-775554.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-775554.html
- 注:
#[derive(Debug)]
通過trait實現(xiàn)“繼承”(本質(zhì)是代碼復(fù)用)
到了這里,關(guān)于Rust學(xué)習(xí)筆記005:結(jié)構(gòu)體 struct的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!