1*b315a0a8SYosh use std::{
2*b315a0a8SYosh     error::Error,
3*b315a0a8SYosh     fs::{self, File, OpenOptions},
4*b315a0a8SYosh     io::{self, Seek, SeekFrom, Write},
5*b315a0a8SYosh };
6*b315a0a8SYosh 
main() -> Result<(), Box<dyn Error>>7*b315a0a8SYosh fn main() -> Result<(), Box<dyn Error>> {
8*b315a0a8SYosh     {
9*b315a0a8SYosh         let mut file = File::open("bar.txt")?;
10*b315a0a8SYosh 
11*b315a0a8SYosh         assert_eq!(27, file.metadata()?.len());
12*b315a0a8SYosh 
13*b315a0a8SYosh         assert_eq!(
14*b315a0a8SYosh             "And stood awhile in thought",
15*b315a0a8SYosh             &io::read_to_string(&mut file)?
16*b315a0a8SYosh         );
17*b315a0a8SYosh 
18*b315a0a8SYosh         file.seek(SeekFrom::Start(11))?;
19*b315a0a8SYosh 
20*b315a0a8SYosh         assert_eq!("while in thought", &io::read_to_string(&mut file)?);
21*b315a0a8SYosh 
22*b315a0a8SYosh         assert!(
23*b315a0a8SYosh             file.write_all(b"Did gyre and gimble in the wabe;\n")
24*b315a0a8SYosh                 .is_err()
25*b315a0a8SYosh         );
26*b315a0a8SYosh     }
27*b315a0a8SYosh 
28*b315a0a8SYosh     assert!(OpenOptions::new().append(true).open("bar.txt").is_err());
29*b315a0a8SYosh     assert!(File::create("new.txt").is_err());
30*b315a0a8SYosh     assert!(fs::create_dir("sub2").is_err());
31*b315a0a8SYosh     assert!(fs::rename("bar.txt", "baz.txt").is_err());
32*b315a0a8SYosh     assert!(fs::remove_file("bar.txt").is_err());
33*b315a0a8SYosh     assert!(fs::remove_dir("sub").is_err());
34*b315a0a8SYosh 
35*b315a0a8SYosh     Ok(())
36*b315a0a8SYosh }
37