【发布时间】:2023-01-23 01:17:32
【问题描述】:
我也有一个结构和相应的 impl (add_account)。
结构体
pub struct Departments {
pub id: String,
pub linked_accounts: Vec<Account>,
}
实施
impl Departments {
pub fn add_account(&mut self, acct: Account) -> Self {
let mut vec: Vec<Account> = self.linked_accounts; //*Error here*
vec.push(acct);
Self {
id: self.id, //*Error here*
linked_accounts: vec,
}
}
}
通话区
从数据库中获取价值并添加帐户并更新回数据库
match db.get::<Departments>(id).await? {
None => bail!("No records found"),
Some(departments) => {
let mut departments = departments;
//calling area
departments.add_account(Account::Credit);
let id = Id::new(Departments::KIND, &id);
gh.update::<_, Departments>(
id,
departments.clone(),
)
.await?;
}
}
在内部分配自我值时出现 'Cannot move self' 错误。
【问题讨论】:
-
这可能是一个 XY 问题。无论如何,我们需要更多细节。
-
我需要在结构“部门”中附加一个向量“帐户”值,这非常简单。我正在调用“dept.add_account(Account::EnumVal)”,其中帐户为枚举
-
我的意思是关于为什么您特别需要使用
&mut self调用并返回拥有的Self的更多详细信息。 -
主要目标不是传递调用区域的所有权,我可能需要在调用区域中分配一个新变量,所以我传递为“&mut self”
-
请提供更多上下文。调用代码的示例会很好。
标签: rust struct self borrow-checker vec