Guest User

Untitled

a guest
Jul 22nd, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. use std::io;
  2. use std::mem;
  3.  
  4. const BUF_SIZE: usize = 20;
  5. pub enum String {
  6. Stack {
  7. data: [u8; BUF_SIZE],
  8. len: usize,
  9. },
  10. Heap(Box<[u8]>),
  11. }
  12.  
  13. impl String {
  14. pub fn filled(r: &mut impl io::Read, len: usize) -> io::Result<Self> {
  15. if len > BUF_SIZE {
  16. let mut vec = Vec::with_capacity(len);
  17. unsafe { vec.set_len(len) };
  18. r.read_exact(&mut vec[..])?;
  19. Ok(String::Heap(vec.into_boxed_slice()))
  20. } else {
  21. let mut data = unsafe { mem::uninitialized() };
  22. r.read_exact(&mut data[..len])?;
  23. Ok(String::Stack { len, data })
  24. }
  25. }
  26. }
  27.  
  28. fn main() {
  29.  
  30. }
Add Comment
Please, Sign In to add comment