io_close/
fs.rs

1//! Filesystem manipulation operations.
2
3use std::fs::File;
4use std::io::{Result, Write};
5use std::path::Path;
6
7use crate::Close;
8
9/// Write a slice as the entire contents of a file.
10///
11/// This function is identical to [`std::fs::write`] but uses [`Close`]
12/// to drop the [`File`](std::fs::File) created from path, returning any
13/// errors encountered when doing so.
14pub fn write<P: AsRef<Path>, C: AsRef<[u8]>>(
15    path: P,
16    contents: C,
17) -> Result<()> {
18    fn inner(path: &Path, contents: &[u8]) -> Result<()> {
19        let mut f = File::create(path)?;
20        f.write_all(contents)?;
21        f.close()
22    }
23    inner(path.as_ref(), contents.as_ref())
24}