【发布时间】:2017-12-07 20:24:21
【问题描述】:
我正在玩 Rust,并且可能咬得比我能咀嚼的多得多,我正在尝试编写一个模块来封装我的数据库流量以供应用程序的其余部分使用。我正在努力的代码如下:
pub fn create_statement(cypher: &str, params: &HashMap<&str, &str>) -> rusted_cypher::Statement {
let mut statement = rusted_cypher::Statement::new(cypher);
for (field, value) in params.iter() {
statement.with_param(field.to_owned(), value.to_owned());
}
return statement;
}
这会产生以下错误:error[E0382]: use of moved value: statement。我认为,我的搜索让我明白了这意味着什么(Statement 结构不可复制,因此被移动,然后......实际上不再可访问,我猜?),但我不知道如何绕过它。任何人都可以指出解决方案的方向吗?
【问题讨论】:
-
据我快速浏览docs 可以看出,
with_param消耗了它的论点;你需要选择一个对statement进行可变引用的函数。 -
小提示:由于 Rust 是一种基于表达式的语言,因此您无需输入
return statement;,只需输入statement。
标签: rust move-semantics ownership