Rust 结构体与枚举的梦幻联动,让你编程更高效

在 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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容