1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
/// Options and flags which can be used to configure how a file is opened. /// /// This corresponds to [`std::fs::OpenOptions`]. /// /// Note that this `OpenOptions` has no `open` method. To open a file with /// an `OptionOptions`, you must first obtain a [`Dir`] containing the file, and /// then call [`Dir::open_file_with`]. /// /// [`std::fs::OpenOptions`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html /// [`Dir`]: struct.Dir.html /// [`Dir::open_file_with`]: struct.Dir.html#method.open_file_with pub struct OpenOptions { pub(crate) read: bool, pub(crate) write: bool, pub(crate) append: bool, pub(crate) truncate: bool, pub(crate) create: bool, pub(crate) create_new: bool, } impl OpenOptions { /// Creates a blank new set of options ready for configuration. /// /// This corresponds to [`std::fs::OpenOptions::new`]. /// /// [`std::fs::OpenOptions::new`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.new pub fn new() -> Self { Self { read: false, write: false, append: false, truncate: false, create: false, create_new: false, } } /// Sets the option for read access. /// /// This corresponds to [`std::fs::OpenOptions::read`]. /// /// [`std::fs::OpenOptions::read`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.read pub fn read(&mut self, read: bool) -> &mut Self { self.read = read; self } /// Sets the option for write access. /// /// This corresponds to [`std::fs::OpenOptions::write`]. /// /// [`std::fs::OpenOptions::write`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.write pub fn write(&mut self, write: bool) -> &mut Self { self.write = write; self } /// Sets the option for the append mode. /// /// This corresponds to [`std::fs::OpenOptions::append`]. /// /// [`std::fs::OpenOptions::append`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.append pub fn append(&mut self, append: bool) -> &mut Self { self.append = append; self } /// Sets the option for truncating a previous file. /// /// This corresponds to [`std::fs::OpenOptions::truncate`]. /// /// [`std::fs::OpenOptions::truncate`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.truncate pub fn truncate(&mut self, truncate: bool) -> &mut Self { self.truncate = truncate; self } /// Sets the option to create a new file. /// /// This corresponds to [`std::fs::OpenOptions::create`]. /// /// [`std::fs::OpenOptions::create`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.create pub fn create(&mut self, create: bool) -> &mut Self { self.create = create; self } /// Sets the option to always create a new file. /// /// This corresponds to [`std::fs::OpenOptions::create_new`]. /// /// [`std::fs::OpenOptions::create_new`]: https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.create_new pub fn create_new(&mut self, create_new: bool) -> &mut Self { self.create_new = create_new; self } } // TODO: Functions from OpenOptionsExt?