< 返回版块

coco 发表于 2022-04-24 15:56

struct User {
    name: String,
}

impl User {
    fn get_name(self) -> String {
        self.name
    }
}

fn main() {
    let user = User {name: "aaaa".to_string()};

    println!("{}", user.get_name());

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

大佬,我要在user.get_name()后,继续使用user,要怎么做呢?get_name(self)是已经定了,不能改成get_name(&self)。

playground:https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=c1b3d59556f74dc1ed29de65898b1085

评论区

写评论
作者 coco 2022-04-24 17:46

感谢,User里引用的那个我用Arc包了一层。然后User在实现Clone就可以了。

--
👇
tjz101: 是这样的,感谢。这是我模拟出来的一个代码。实际比这稍微复杂点。 就是我User里还引用了一个struct。那个struct实现Clone。

--
👇
Nayaka: ```rust #[derive(Clone)] struct User { name: String, }

impl User { fn get_name(self) -> String { self.name } }

fn main() { let user = User {name: "aaaa".to_string()}; println!("{}", user.clone().get_name()); println!("{}", user.name);

}


这样?

作者 coco 2022-04-24 17:39

是这样的,感谢。这是我模拟出来的一个代码。实际比这稍微复杂点。 就是我User里还引用了一个struct。那个struct实现Clone。

--
👇
Nayaka: ```rust #[derive(Clone)] struct User { name: String, }

impl User { fn get_name(self) -> String { self.name } }

fn main() { let user = User {name: "aaaa".to_string()}; println!("{}", user.clone().get_name()); println!("{}", user.name);

}


这样?
Nayaka 2022-04-24 16:43
#[derive(Clone)]
struct User {
    name: String,
}

impl User {
    fn get_name(self) -> String {
        self.name
    }
}

fn main() {
    let user = User {name: "aaaa".to_string()};
    println!("{}", user.clone().get_name());
    println!("{}", user.name);
    
}

这样?

1 共 3 条评论, 1 页