1extern crate memfd;
9
10use std::io::{Seek, SeekFrom, Write};
11
12fn main() {
13 let opts = memfd::MemfdOptions::default().allow_sealing(true);
15 let mfd = opts.create("sized-1K").unwrap();
16
17 mfd.as_file().set_len(1024).unwrap();
19
20 mfd.add_seals(&[
22 memfd::FileSeal::SealShrink,
23 memfd::FileSeal::SealGrow
24 ]).unwrap();
25
26 mfd.add_seal(memfd::FileSeal::SealSeal).unwrap();
28
29 let data_1k = vec![0x00; 1024];
31 let r = mfd.as_file().write_all(&data_1k);
32 assert!(r.is_ok());
33 mfd.as_file().seek(SeekFrom::Start(0)).unwrap();
34
35 let data_2k = vec![0x11; 2048];
37 let r = mfd.as_file().write_all(&data_2k);
38 assert!(r.is_err());
39 mfd.as_file().seek(SeekFrom::Start(0)).unwrap();
40
41 let r = mfd.as_file().set_len(2048);
43 assert!(r.is_err());
44
45 let data_1k = vec![0x22; 1024];
47 let r = mfd.as_file().write_all(&data_1k);
48 assert!(r.is_ok());
49}