2

私は Rust と extra::json モジュールを学んでいます。これが私の例です(余分な不要な型注釈があります):

let j:Result<Json,JsonError> = from_str("[{\"bar\":\"baz\", \"biz\":123}]");
let l:List = match j {
  Ok(List(l)) => l,
  Ok(_) => fail!("Expected a list at the top level"),
  Err(e) => fail!(fmt!("Error: %?", e))
};
println(fmt!("item = %?", l.iter().advance(|i|{
  match i {
      &Object(o) => {
          println(fmt!("Object is %?", o));
      },
      _ => {
          fail!("Should be a list of objects, no?");
      }
  }
  println(fmt!("i=%?", i));
  true
})));

コンパイルすると、次のようになります。

$ rust run json.rs
json.rs:70:9: 70:18 error: cannot move out of dereference of & pointer
json.rs:70         &Object(o) => {
                    ^~~~~~~~~
note: in expansion of fmt!
json.rs:68:10: 79:6 note: expansion site
error: aborting due to previous error

このエラーにヒットしない match の使用が他にもあります。

ご協力いただきありがとうございます!

4

3 に答える 3

0

そのはず

   match *i {
      Object(ref o) => println(fmt!("Object is %?", o)),
      _ => fail!("Should be a list of objects, no?")
   }

https://github.com/mozilla/rust/wiki/Note-style-guide#match-expressionsを参照してください

于 2013-07-18T22:03:09.943 に答える