私はRustに非常に慣れていないので、理解できないことを教えてください。構造体への参照で一致させようとしています。op
typeのフィールドOption<Operator>
がOperator
あり、 は定義された列挙型です。これはコードです:
fn formatNodeName(node: &ComputeNode) -> String{
match node.op{
Some(ref operator) => format!("{}[label=\"{}[{}]\\n{}\"];",node.id, node.name, node.id, operator),
_ => format!("{}[label=\"{}[{}]\"];",node.id, node.name, node.id)
}
}
しかし、次のエラーが表示されますが、これはある程度理解できますが、そうではありません。
src/codegen/graph_viz.rs:43:8: 43:12 error: cannot move out of borrowed content
src/codegen/graph_viz.rs:43 match node.op{
^~~~
src/codegen/graph_viz.rs:44:8: 44:16 note: attempting to move value to here
src/codegen/graph_viz.rs:44 Some(operator) => format!("{}[label=\"{}[{}]\\n{}\"];",node.id, node.name, node.id, operator),
^~~~~~~~
src/codegen/graph_viz.rs:44:8: 44:16 help: to prevent the move, use `ref operator` or `ref mut operator` to capture value by reference
error: aborting due to previous error
一致するように、そのようなことを「適切に」実装するにはどうすればよいですか?