Guest User

Untitled

a guest
Jun 23rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.78 KB | None | 0 0
  1. struct Hoge {
  2. pub v: i32,
  3. }
  4.  
  5. struct Fuga {
  6. pub v: i32,
  7. }
  8.  
  9. impl std::convert::From<Hoge> for Fuga {
  10. fn from(hoge: Hoge) -> Self {
  11. Fuga {v: hoge.v}
  12. }
  13. }
  14.  
  15. impl std::convert::From<Hoge> for Result<Fuga, String> {
  16. fn from(hoge: Hoge) -> Self {
  17. Ok(Fuga {v: hoge.v})
  18. }
  19. }
  20.  
  21. fn main() {
  22. // To Fuga
  23. {
  24. let h = Hoge {v: 10};
  25. let f: Fuga = h.into();
  26. }
  27.  
  28. // To Result of Fuga
  29. {
  30. let h = Hoge {v: 10};
  31. let f: Result<Fuga, String> = h.into();
  32. }
  33.  
  34. //
  35. {
  36. let h = Hoge {v: 10};
  37. // これをしたい
  38. //let f: Fuga = h.into()?;
  39.  
  40. // なるほどこうは書ける。でも長い
  41. let f: Fuga = std::convert::Into::<Result<Fuga, String>>::into(h).unwrap();
  42. }
  43. }
Add Comment
Please, Sign In to add comment