SHARE
TWEET

Untitled

a guest Apr 24th, 2019 62 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #![allow(unreachable_code)]
  2.  
  3.  
  4. fn main() {
  5.     println!("{:?}", {
  6.         use std::convert::{TryFrom, TryInto}; struct NewType<'a, T>(&'a Vec<T>); impl<'a, T> TryFrom<&'a Vec<T>> for NewType<'a, T> { type Error = (); fn try_from(vec: &'a Vec<T>) -> Result<NewType<'a, T>, ()> { Ok(NewType(vec)) } } fn check<T: TryInto<NewType<'_, T>>>(_: T) {} let vec: Vec<i32> = Vec::new(); check(&vec)
  7.     });
  8. }
  9.  
  10.  
  11. /* ~~~~=== stderr ===~~~~
  12.    Compiling playground v0.0.1 (/playground)
  13. error[E0637]: `'_` cannot be used here
  14.  --> src/main.rs:6:262
  15.   |
  16. 6 |         use std::convert::{TryFrom, TryInto}; struct NewType<'a, T>(&'a Vec<T>); impl<'a, T> TryFrom<&'a Vec<T>> for NewType<'a, T> { type Error = (); fn try_from(vec: &'a Vec<T>) -> Result<NewType<'a, T>, ()> { Ok(NewType(vec)) } } fn check<T: TryInto<NewType<'_, T>>>(_: T) {} let vec: Vec<i32> = Vec::new(); check(&vec)
  17.   |                                                                                                                                                                                                                                                                      ^^ `'_` is a reserved lifetime name
  18.  
  19. error[E0310]: the parameter type `T` may not live long enough
  20.  --> src/main.rs:6:234
  21.   |
  22. 6 |         use std::convert::{TryFrom, TryInto}; struct NewType<'a, T>(&'a Vec<T>); impl<'a, T> TryFrom<&'a Vec<T>> for NewType<'a, T> { type Error = (); fn try_from(vec: &'a Vec<T>) -> Result<NewType<'a, T>, ()> { Ok(NewType(vec)) } } fn check<T: TryInto<NewType<'_, T>>>(_: T) {} let vec: Vec<i32> = Vec::new(); check(&vec)
  23.   |                                                                                                                                                                                                                                          ^^^^^^^^^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  24.   |                                                                                                                                                                                                                                                   |
  25.   |                                                                                                                                                                                                                                                   help: consider adding an explicit lifetime bound `T: 'static`...
  26.   |
  27. note: ...so that the type `T` will meet its required lifetime bounds
  28.  --> src/main.rs:6:234
  29.   |
  30. 6 |         use std::convert::{TryFrom, TryInto}; struct NewType<'a, T>(&'a Vec<T>); impl<'a, T> TryFrom<&'a Vec<T>> for NewType<'a, T> { type Error = (); fn try_from(vec: &'a Vec<T>) -> Result<NewType<'a, T>, ()> { Ok(NewType(vec)) } } fn check<T: TryInto<NewType<'_, T>>>(_: T) {} let vec: Vec<i32> = Vec::new(); check(&vec)
  31.   |                                                                                                                                                                                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  32.  
  33. error: aborting due to 2 previous errors
  34.  
  35. Some errors occurred: E0310, E0637.
  36. For more information about an error, try `rustc --explain E0310`.
  37. error: Could not compile `playground`.
  38.  
  39. To learn more, run the command again with --verbose.
  40.  
  41. */
  42.  
  43. /* ~~~~=== stdout ===~~~~
  44.  
  45. */
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top