Struct rustc_serialize::opaque::FileEncoder
source · pub struct FileEncoder {
buf: Box<[MaybeUninit<u8>]>,
buffered: usize,
flushed: usize,
file: File,
res: Result<(), Error>,
}
Expand description
FileEncoder
encodes data to file via fixed-size buffer.
When encoding large amounts of data to a file, using FileEncoder
may be
preferred over using MemEncoder
to encode to a Vec
, and then writing the
Vec
to file, as the latter uses as much memory as there is encoded data,
while the former uses the fixed amount of memory allocated to the buffer.
FileEncoder
also has the advantage of not needing to reallocate as data
is appended to it, but the disadvantage of requiring more error handling,
which has some runtime overhead.
Fields§
§buf: Box<[MaybeUninit<u8>]>
The input buffer. For adequate performance, we need more control over
buffering than BufWriter
offers. If BufWriter
ever offers a raw
buffer access API, we can use it, and remove buf
and buffered
.
buffered: usize
§flushed: usize
§file: File
§res: Result<(), Error>
Implementations§
source§impl FileEncoder
impl FileEncoder
pub fn new<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn with_capacity<P: AsRef<Path>>(path: P, capacity: usize) -> Result<Self>
pub fn position(&self) -> usize
pub fn flush(&mut self)
pub fn file(&self) -> &File
fn capacity(&self) -> usize
fn write_one(&mut self, value: u8)
fn write_all(&mut self, buf: &[u8])
fn write_all_unbuffered(&mut self, buf: &[u8])
pub fn finish(self) -> Result<usize, Error>
Trait Implementations§
source§impl Drop for FileEncoder
impl Drop for FileEncoder
source§impl Encodable<FileEncoder> for [u8]
impl Encodable<FileEncoder> for [u8]
fn encode(&self, e: &mut FileEncoder)
source§impl Encodable<FileEncoder> for IntEncodedWithFixedSize
impl Encodable<FileEncoder> for IntEncodedWithFixedSize
fn encode(&self, e: &mut FileEncoder)
source§impl Encoder for FileEncoder
impl Encoder for FileEncoder
fn emit_usize(&mut self, v: usize)
fn emit_u128(&mut self, v: u128)
fn emit_u64(&mut self, v: u64)
fn emit_u32(&mut self, v: u32)
fn emit_u16(&mut self, v: u16)
fn emit_u8(&mut self, v: u8)
fn emit_isize(&mut self, v: isize)
fn emit_i128(&mut self, v: i128)
fn emit_i64(&mut self, v: i64)
fn emit_i32(&mut self, v: i32)
fn emit_i16(&mut self, v: i16)
fn emit_i8(&mut self, v: i8)
fn emit_bool(&mut self, v: bool)
fn emit_f64(&mut self, v: f64)
fn emit_f32(&mut self, v: f32)
fn emit_char(&mut self, v: char)
fn emit_str(&mut self, v: &str)
fn emit_raw_bytes(&mut self, s: &[u8])
fn emit_enum_variant<F>(&mut self, v_id: usize, f: F)where
F: FnOnce(&mut Self),
fn emit_fieldless_enum_variant<const ID: usize>(&mut self)
Auto Trait Implementations§
impl !RefUnwindSafe for FileEncoder
impl Send for FileEncoder
impl Sync for FileEncoder
impl Unpin for FileEncoder
impl !UnwindSafe for FileEncoder
Blanket Implementations§
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 48 bytes