Avoid unnecessary Vec construction in BufReader

This commit is contained in:
Caleb Sander 2020-12-28 15:45:36 -05:00
parent 939b14334d
commit 9425e304b1
2 changed files with 4 additions and 4 deletions

View file

@ -90,10 +90,9 @@ impl<R: Read> BufReader<R> {
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
pub fn with_capacity(capacity: usize, inner: R) -> BufReader<R> { pub fn with_capacity(capacity: usize, inner: R) -> BufReader<R> {
unsafe { unsafe {
let mut buffer = Vec::with_capacity(capacity); let mut buf = Box::new_uninit_slice(capacity).assume_init();
buffer.set_len(capacity); inner.initializer().initialize(&mut buf);
inner.initializer().initialize(&mut buffer); BufReader { inner, buf, pos: 0, cap: 0 }
BufReader { inner, buf: buffer.into_boxed_slice(), pos: 0, cap: 0 }
} }
} }
} }

View file

@ -289,6 +289,7 @@
#![feature(needs_panic_runtime)] #![feature(needs_panic_runtime)]
#![feature(negative_impls)] #![feature(negative_impls)]
#![feature(never_type)] #![feature(never_type)]
#![feature(new_uninit)]
#![feature(nll)] #![feature(nll)]
#![feature(nonnull_slice_from_raw_parts)] #![feature(nonnull_slice_from_raw_parts)]
#![feature(once_cell)] #![feature(once_cell)]