0
私はそれに対して何らかの操作をした後で可変参照を返そうとしています。これは最高のコードの一部によって説明される:Rustで可変参照を借りて返す優雅な方法
#[derive(PartialEq)]
pub enum Value {
Null,
Array(Vec<Value>),
}
impl Value {
pub fn new() -> Value {
Value::Array(Vec::new())
}
pub fn push<'a, T> (&'a mut self, value: T) -> Option<&'a mut Value>
where T:Into<Value> {
let temp = match *self {
Value::Array(ref mut vec) => {
vec.push(value.into());
true
},
_ => false,
};
if temp {
Some(self)
} else {
None
}
}
}
#[test]
fn push_test() {
let mut val = Value::new();
val.push(Value::Null);
assert!(val == Value::Array(vec![Value::Null]));
}
プレイバージョンがhereです。ブール値の回避策は、match
ブロック内からSome(self)
を返すと複数回借りているためです。ブール値を使用しないでpush
関数を実装するエレガントな方法はありますか?機能署名を保持することが可能な場合は、そのボーナス。ありがとうございました!ブール値を持つ