pub struct VirtualStreamWriter { /* private fields */ }Implementations§
Source§impl VirtualStreamWriter
impl VirtualStreamWriter
Sourcepub fn stream_id(&self) -> u64
pub fn stream_id(&self) -> u64
Examples found in repository?
examples/interleaved_temp_storage.rs (line 15)
8fn main() {
9 let storage = InterleavedTempFile::new_temp().unwrap();
10 let mut handles = Vec::new();
11
12 for stream_index in 0..4 {
13 let mut writer = storage.spawn_stream();
14 handles.push(thread::spawn(move || {
15 let stream_id = writer.stream_id();
16 let chunks = [
17 format!("track-{stream_index}:header|"),
18 format!("track-{stream_index}:events|"),
19 format!("track-{stream_index}:tail"),
20 ];
21
22 let mut expected = String::new();
23 for chunk in chunks {
24 writer.write_all(chunk.as_bytes()).unwrap();
25 expected.push_str(&chunk);
26 }
27
28 writer.flush().unwrap();
29 (stream_id, expected)
30 }));
31 }
32
33 let mut expected_streams = Vec::new();
34 for handle in handles {
35 expected_streams.push(handle.join().unwrap());
36 }
37 expected_streams.sort_unstable_by_key(|(stream_id, _)| *stream_id);
38
39 println!("Backing file: {}", storage.path().display());
40 for (stream_id, expected) in expected_streams {
41 let mut reader = storage.open_reader(stream_id).unwrap();
42 let mut actual = String::new();
43 reader.read_to_string(&mut actual).unwrap();
44
45 assert_eq!(actual, expected);
46 println!("stream {stream_id}: {actual}");
47 }
48}pub fn flush_to_disk(&self) -> Result<(), VirtualFileError>
Trait Implementations§
Source§impl Debug for VirtualStreamWriter
impl Debug for VirtualStreamWriter
Source§impl Write for VirtualStreamWriter
impl Write for VirtualStreamWriter
Source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Writes a buffer into this writer, returning how many bytes were written. Read more
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flushes this output stream, ensuring that all intermediately buffered
contents reach their destination. Read more
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
write_all_vectored)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations§
impl Freeze for VirtualStreamWriter
impl RefUnwindSafe for VirtualStreamWriter
impl Send for VirtualStreamWriter
impl Sync for VirtualStreamWriter
impl Unpin for VirtualStreamWriter
impl UnsafeUnpin for VirtualStreamWriter
impl UnwindSafe for VirtualStreamWriter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more