这是工厂吗?如何为结构创建构造函数?

Is this factory and how do I make constructor for struct?

struct Person{
    name: String
}

fn person_factory(name: String)-> Person {
    Person{
        name,
    }
}

fn main() {
    let p1 = person_factory("Viktor Draganov".to_string());

    println!("{}", p1.name);
}

这家工厂生锈了吗?我如何从构造函数中初始化 person?

person_factory 确实看起来像一个工厂(如果不是特别有用或必要的话)。通常工厂的存在是为了从用户那里抽象出一些创建逻辑。比如创建人时将出生日期转换为年龄。

Rust 没有任何特殊的方法可以像您在 Java、Python、C++ 等语言中熟悉的构造函数一样工作;然而,有一种常见的做法提供了与本网站中描述的基本相同的行为,其中涵盖了 Rust 设计模式:Constructors.

按照这篇文章,您可以像这样为您的 Person class 创建一个“构造函数”(它看起来应该与您在上面分享的工厂方法非常相似):

struct Person{
    name: String
}

impl Person {
    pub fn new(name: String) -> Self {
        Person {
            name: name
        }
    }
}

fn main() {
    let p1 = Person::new("Viktor Draganov".to_string());

    println!("{}", p1.name);
}