Rust惯用的选择是为结构实现方法还是将该结构传递给函数

lrpiutwd  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(61)

我经常问自己,在结构体impl(看起来更面向对象的东西)中的方法和处理这个结构体的函数(我说更面向数据的东西)之间组织代码的最惯用的方法是什么。
由于我找不到任何关于它的信息,我决定在这里询问是否有人有这方面的信息,或者一些关于它的见解。
下面是我所指的两个简单的情况下的方法。
方法实现(面向对象):

struct Merger {
    field1: String,
    field2: String,
}

impl Merger {
    pub fn merge(&self, data_to_merge: Vec<String>) -> String {
        // do stuff...
    }
}

字符串
功能实现(面向数据?):

struct MergeConfig {
    field1: String,
    field2: String,
}

fn merge(conf: &MergeConfig, data_to_merge: Vec<String>) -> String {
    // do stuff...
}


所以我的问题是:

  • 结构化代码的最惯用的方法是什么?
  • 如果它更多的是一种设计选择,那么每种方式的典型用例是什么?(因为两者似乎在任何情况下都是有效的)
5ktev3wc

5ktev3wc1#

API指南说这个特定的例子应该是Merger上的一个方法。
在函数上使用方法的一个直接好处是,您不必导入或限定函数,而只需执行config.merge(data),它将在所有上下文中工作,而无需导入或限定merge

相关问题