writer/
writer.rs

1use embytes_buffer::{Buffer, BufferWriter, ReadWrite};
2use embedded_io::{Read, Write};
3
4
5
6fn main () {
7    let mut bytes = [0; 1024];
8    let mut buffer = Buffer::new(&mut bytes);
9
10    // Write some bytes
11    buffer.write_all("abc".as_bytes()).unwrap();
12
13    // Create a writer, write some bytes but do not commit
14    // writer implements DerefMut<Target = [u8]> and can be used as a mutable bytes slice
15    let mut writer = buffer.create_writer();
16    writer[0] = 36; // ascii '$'
17    drop(writer);
18
19    // Create a new writer
20    let mut writer = buffer.create_writer();
21    writer[0] = 100; // ascii d
22    writer[1] = 101; // ascii e
23    writer[2] = 102; // ascii f
24
25    // Commit that 3 bytes are written
26    // writing bytes has only an effect if the written bytes are committed
27    writer.commit(3).unwrap();
28    drop(writer); // drop the writer to follow the borrowing rules. at drop the written bytes are committed
29
30    let mut result = [0; 1024];
31    let bytes_read = buffer.read(&mut result).unwrap();
32    assert_eq!("abcdef".as_bytes(), &result[..bytes_read]);
33}
34