gpt4 book ai didi

rust - 如何从 &self 生成 &mut self?

转载 作者:行者123 更新时间:2023-11-29 08:02:11 25 4
gpt4 key购买 nike

我想公开一个具有不可变 self 的公共(public)函数,它调用一个具有可变 self 的私有(private)函数。

struct Foo {
value: i32,
}

impl Foo {
fn f1(&self) {
self.f2(); // <--- is it possible to make self mutable?
}

fn f2(&mut self) {
self.value = 5;
}
}

fn main() {
let foo = Foo { value: 0 };
foo.f1();
}

编译这段代码时出现错误

cannot borrow immutable borrowed content *self as mutable

是否可以使自身可变?

最佳答案

编辑:

在遗漏了最后一句话之后......您可以将属性包装在 Cell 中:

use std::cell::Cell;

struct Foo { value: Cell<i32> }

impl Foo {
fn f1(&self) {
self.f2();
}

fn f2(&self) {
self.value.set(5);
}
}

fn main() {
let foo = Foo { value: Cell::new(0) };
foo.f1();
println!("{:?}", foo.value.get()); // prints 5
}

关于rust - 如何从 &self 生成 &mut self?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com