小编And*_*fat的帖子

当方法需要值的所有权时,按值传递还是按引用传递更传统?

当我通过引用结构体的new()方法传递对象,并且结构体将拥有该对象时,是否更传统:

  • 通过引用传递对象,并to_owned()new()
  • 在调用之前克隆对象new(),并按值传递,移动它

我可以从清晰度和关注点分离的角度考虑每种方法的优缺点。

#[derive(Clone)]
struct MyState;

struct MyStruct {
    state: MyState,
}

impl MyStruct {
    pub fn new_by_ref(state: &MyState) -> Self {
        MyStruct {
            state: state.to_owned(),
        }
    }

    pub fn new_by_val(state: MyState) -> Self {
        MyStruct { state }
    }
}

fn main() {
    let state1 = MyState;
    let struct1 = MyStruct::new_by_ref(&state1);

    let state2 = MyState;
    let struct2 = MyStruct::new_by_val(state2.clone());
}
Run Code Online (Sandbox Code Playgroud)

reference pass-by-reference pass-by-value rust

15
推荐指数
1
解决办法
852
查看次数