Guest User

Untitled

a guest
Dec 15th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. #![feature(pin)]
  2. #![feature(optin_builtin_traits)]
  3.  
  4. use std::pin::Pin;
  5. use std::marker::{Unpin};
  6. use std::ptr::NonNull;
  7.  
  8.  
  9. struct Unmovable {
  10. data: String,
  11. slice: NonNull<String>,
  12. }
  13.  
  14. impl !Unpin for Unmovable {
  15.  
  16. }
  17.  
  18. impl Unmovable {
  19. fn new(data: String) -> Self {
  20. Unmovable {
  21. data,
  22. slice: NonNull::dangling(),
  23. }
  24. }
  25. }
  26.  
  27. #[cfg(test)]
  28. mod tests {
  29. use std::ptr::NonNull;
  30. use super::Unmovable;
  31.  
  32. #[test]
  33. fn it_works() {
  34. assert_eq!(2 + 2, 4);
  35. }
  36.  
  37. #[test]
  38. fn unmovable() {
  39. let unmoved = Unmovable::new("hello".to_string());
  40. let mut still_unmoved = unmoved;
  41. assert_eq!(still_unmoved.slice, NonNull::from(&still_unmoved.data));
  42. }
  43. }
Add Comment
Please, Sign In to add comment