在 Rust 中,结构体(Structs)是一种自定义数据类型,用于将多个相关的值组合成一个单一的类型。结构体在 Rust 中的使用非常灵活,可以用来模拟各种数据结构和对象。
今天这篇文章我们来总结下rust中的结构体用法,我们探讨它的基本用法以及与元组,枚举,单元,模式匹配,泛型结合的用法。我们将还会探讨结构体与结构体之间的嵌套,结构体中属性的可见性和生命周期,干货满满对你学习rust的结构体大有裨益,这这篇文章带你彻底理解结构体。

结合使用结构体和枚举

枚举和结构体可以组合使用,以创建更复杂的数据结构。这种组合提供了强大的数据建模能力,允许你创建具有不同数据和行为的类型。

我们创建一个Point的结构体,里面有xy两个属性其类型都是i32类型,我们再创建一个枚举名为:Shape,Shape枚举有两个元素CircleRectangle,都类似结构体里面都有元素,并且其中的元素的类型可以是结构体,在下面的代码具体体现在center: Pointtop_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

最后欢迎大家关注我的公众号:花说编程


lizehucoder
1 声望0 粉丝