在 Rust 中,结构体(Structs)是一种自定义数据类型,用于将多个相关的值组合成一个单一的类型。结构体在 Rust 中的使用非常灵活,可以用来模拟各种数据结构和对象。
今天这篇文章我们来总结下rust中的结构体用法,我们探讨它的基本用法以及与元组,枚举,单元,模式匹配,泛型结合的用法。我们将还会探讨结构体与结构体之间的嵌套,结构体中属性的可见性和生命周期,干货满满对你学习rust的结构体大有裨益,这这篇文章带你彻底理解结构体。
结合使用结构体和枚举
枚举和结构体可以组合使用,以创建更复杂的数据结构。这种组合提供了强大的数据建模能力,允许你创建具有不同数据和行为的类型。
我们创建一个Point
的结构体,里面有x
和y
两个属性其类型都是i32
类型,我们再创建一个枚举名为:Shape
,Shape枚举有两个元素Circle
和Rectangle
,都类似结构体里面都有元素,并且其中的元素的类型可以是结构体,在下面的代码具体体现在center: Point
和top_left: Point, bottom_right: Point
,就是把我们定义的结构体
struct Point {
x: i32,
y: i32,
}
enum Shape {
Circle { center: Point, radius: f32 },
Rectangle { top_left: Point, bottom_right: Point },
}
模式匹配
在这个函数中,我们使用match表达式来计算并打印不同形状的面积。每个match分支处理一个特定的枚举变体,并访问其中的数据。
fn print_area(shape: Shape) {
match shape {
Shape::Circle { center, radius } => {
println!("Area of the circle is {}", 3.14 * radius * radius);
},
Shape::Rectangle { top_left, bottom_right } => {
let width = (bottom_right.x - top_left.x) as f32;
let height = (bottom_right.y - top_left.y) as f32;
println!("Area of the rectangle is {}", width * height);
},
}
}
main(){
let shape = Shape::Circle {
center: Point1 { x: 2, y: 4 },
radius: 3.2,
};
print_area(shape);
}
/// 运行结果:Area of the circle is 32.153603
最后欢迎大家关注我的公众号:花说编程
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。