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);
}
Run Code Online (Sandbox Code Playgroud)
这家工厂生锈了吗?如何从构造函数初始化 person?
jos*_*nda 13
person_factory看起来确实像一家工厂(如果不是特别有用或必要的工厂)。通常工厂的存在是为了从用户那里抽象出一些创建逻辑。比如创建人时将出生日期转换为年龄。
Rust 没有任何像 Java、Python、C++ 等语言中熟悉的构造函数一样工作的特殊方法;然而,有一种常见的做法提供了与本网站中描述的基本相同的行为,其中涵盖了 Rust 设计模式:构造函数。
按照这篇文章,您可以为您的 Person 类创建一个“构造函数”,如下所示(它应该看起来与您上面共享的工厂方法非常相似):
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);
}
Run Code Online (Sandbox Code Playgroud)