Guest User

Untitled

a guest
Nov 18th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.64 KB | None | 0 0
  1. use std::borrow::{Borrow, Cow};
  2. use std::rc::Rc;
  3. use std::cell::{Cell, RefCell};
  4. use std::sync::Arc;
  5. use std::error::Error;
  6. use std::path::{Path, PathBuf};
  7.  
  8. fn main() {
  9. let s: i32 = 3;
  10. let m: i64 = s.into(); // impl From<i32> for i64
  11. let m: f64 = s.into(); // impl From<i32> for f64
  12. let m: i32 = s.into(); // impl<T> From<T> for T
  13. let m: Option<_> = s.into(); // impl<T> From<T> for Option<T> // Option<i32>
  14. let m: Rc<i32> = s.into(); // impl<T> From<T> for Rc<T>
  15. let m: Cell<i32> = s.into(); // impl<T> From<T> for Cell<T>
  16. let m: RefCell<i32> = s.into(); // impl<T> From<T> for RefCell<T>
  17. let m: Arc<i32> = s.into(); // impl<T> From<T> for Arc<T>
  18. let m: Box<i32> = s.into(); // impl<T> From<T> for Box<T>
  19.  
  20. let s: &str = "abc";
  21. let m: Option<_> = s.into(); // impl<T> From<T> for Option<T> // Option<&str>
  22. let m: Vec<u8> = s.into(); // impl<'a> From<&'a str> for Vec<u8>
  23. let m: String = s.into(); // impl<'a> From<&'a str> for String
  24. let m: Cow<str> = s.into(); // impl<'a> From<&'a str> for Cow<'a, str>
  25. let m: Box<str> = s.into(); // impl<'a> From<&'a str> for Box<str>
  26. let m: Rc<str> = s.into(); // impl<'a> From<&'a str> for Rc<str>
  27. let m: Arc<str> = s.into(); // impl<'a> From<&'a str> for Arc<str>
  28. let m: Box<Error+Send+Sync> = s.into(); // impl<'a, 'b> From<&'b str> for Box<Error + Send + Sync + 'a>
  29.  
  30. // Path
  31. let s: &Path = Path::new("/foo/bar");
  32. let m: Option<&Path> = s.into(); // impl<T> From<T> for Option<T> // Option<&Path>
  33. let m: Box<Path> = s.into(); // impl<'a> From<&'a Path> for Box<Path>
  34. let m: Cow<Path> = s.into(); // impl<'a> From<&'a Path> for Cow<'a, Path>
  35.  
  36. let s: String = "abc".to_string();
  37. let m: Cell<String> = s.clone().into(); // impl<T> From<T> for Cell<T>
  38. let m: RefCell<String> = s.clone().into(); // impl<T> From<T> for RefCell<T>
  39. let m: Option<_> = s.clone().into(); // impl<T> From<T> for Option<T> // Option<String>
  40. let m: Vec<u8> = s.clone().into(); // impl From<String> for Vec<u8>
  41. let m: Rc<str> = s.clone().into(); // impl From<String> for Rc<str>
  42. let m: Arc<str> = s.clone().into(); // impl From<String> for Arc<str>
  43. let m: Box<str> = s.clone().into(); // impl From<String> for Box<str>
  44. let m: Cow<str> = s.clone().into(); // impl<'a> From<String> for Cow<'a, str>
  45. let m: Box<Error + Send + Sync> = s.clone().into(); // impl From<String> for Box<Error + Send + Sync>
  46. let m: PathBuf = s.clone().into();
  47.  
  48. // PathBuf
  49. let s: PathBuf = PathBuf::from("/foo/bar");
  50. let m: Option<_> = s.clone().into(); // impl<T> From<T> for Option<T> // Option<PathBuf>
  51. let m: Box<Path> = s.clone().into(); // impl From<Box<Path>> for PathBuf
  52. let m: Cow<Path> = s.clone().into(); // impl<'a> From<PathBuf> for Cow<'a, Path>
  53.  
  54. // slice
  55. let arr: &[i32] = &[1,2,3];
  56. let m: Vec<i32> = arr.into();// impl<'a, T> From<&'a [T]> for Vec<T> where T: Clone
  57. let m: Rc<[i32]> = arr.into(); // impl<'a, T> From<&'a [T]> for Rc<[T]>
  58. let m: Arc<[i32]> = arr.into(); // impl<'a, T> From<&'a [T]> for Arc<[T]>
  59. let m: Cow<[i32]> = arr.into(); // impl<'a, T> From<&'a [T]> for Cow<'a, [T]>
  60. let m: Box<[i32]> = arr.into(); // impl<'a, T> From<&'a [T]> for Box<[T]>
  61.  
  62. let s: Cow<[i32]> = Cow::from(&[3,4,5][..]);
  63. let m: Vec<i32> = s.into(); // impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
  64.  
  65. let s: Cow<str> = Cow::from("abc");
  66. let m: String = s.clone().into();// impl<'a> From<Cow<'a, str>> for String
  67.  
  68.  
  69. let v: Vec<i32> = vec![1,2,3];
  70. let m: Rc<[i32]> = v.clone().into(); // impl<T> From<Vec<T>> for Rc<[T]>
  71. let m: Cow<[i32]> = v.clone().into(); // impl<'a, T> From<Vec<T>> for Cow<'a, [T]>
  72. let m: Arc<[i32]> = v.clone().into(); // impl<T> From<Vec<T>> for Arc<[T]>
  73. let m: Box<[i32]> = v.clone().into(); // impl<T> From<Vec<T>> for Box<[T]>
  74.  
  75. let s: Box<i32> = Box::new(3);
  76. let m: Rc<i32> = s.clone().into(); // impl<T> From<Box<T>> for Rc<T> where T: ?Sized
  77. let m: Arc<i32> = s.clone().into(); // impl<T> From<Vec<T>> for Arc<[T]>
  78.  
  79. let v: Box<[i32]> = Box::new([1,2,3]);
  80. let m: Rc<[i32]> = v.clone().into(); // impl<T> From<Box<T>> for Rc<T> where T: ?Sized
  81. let m: Arc<[i32]> = v.clone().into(); // impl<T> From<Vec<T>> for Arc<[T]>
  82. let m: Vec<i32> = v.clone().into(); // impl<T> From<Box<[T]>> for Vec<T>
  83.  
  84. let s: Box<str> = "abc".to_string().into();
  85. let m: Rc<str> = s.clone().into(); // impl<T> From<Box<T>> for Rc<T> where T: ?Sized
  86. let m: Arc<str> = s.clone().into(); // impl<T> From<Vec<T>> for Arc<[T]>
  87. let m: String = s.clone().into(); // impl From<Box<str>> for String
  88. let m: Box<[u8]> = s.clone().into(); // impl From<Box<str>> for Box<[u8]>
  89. }
Add Comment
Please, Sign In to add comment