相关疑难解决方法(0)

Rust 构建器模式是否必须使用冗余的结构代码?

我正在查看Rust 文档的方法语法部分,并发现了构建器模式的示例。CircleBuilder下面示例中的结构是该结构的精确副本Circle。看起来这个冗余代码违反了通常的编程规范。

我理解为什么该示例创建了一个新结构,因为创建者不想针对原始Circle结构实现构建器方法。这很好,但是有没有办法重写这个示例,以便没有冗余,但仍然保持函数中漂亮的构建器接口main()完好无损?

我尝试创建一个空结构或仅包含一个一次性元素的结构,但这不起作用。

struct Circle {
    x: f64,
    y: f64,
    radius: f64,
}

impl Circle {
    fn area(&self) -> f64 {
        std::f64::consts::PI * (self.radius * self.radius)
    }
}

struct CircleBuilder {
    x: f64,
    y: f64,
    radius: f64,
}

impl CircleBuilder {
    fn new() -> CircleBuilder {
        CircleBuilder { x: 0.0, y: 0.0, radius: 1.0, }
    }

    fn x(&mut self, coordinate: f64) -> &mut CircleBuilder {
        self.x = coordinate;
        self …
Run Code Online (Sandbox Code Playgroud)

struct builder rust

5
推荐指数
1
解决办法
2434
查看次数

标签 统计

builder ×1

rust ×1

struct ×1