Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::io;
- use std::mem;
- const BUF_SIZE: usize = 20;
- pub enum String {
- Stack {
- data: [u8; BUF_SIZE],
- len: usize,
- },
- Heap(Box<[u8]>),
- }
- impl String {
- pub fn filled(r: &mut impl io::Read, len: usize) -> io::Result<Self> {
- if len > BUF_SIZE {
- let mut vec = Vec::with_capacity(len);
- unsafe { vec.set_len(len) };
- r.read_exact(&mut vec[..])?;
- Ok(String::Heap(vec.into_boxed_slice()))
- } else {
- let mut data = unsafe { mem::uninitialized() };
- r.read_exact(&mut data[..len])?;
- Ok(String::Stack { len, data })
- }
- }
- }
- fn main() {
- }
Add Comment
Please, Sign In to add comment