An extension trait ([Close
]) for closing I/O related types such as
File
and BufWriter
.
Specifically it is for types containing a resource handle which,
when closed, may return an error.
Provided implementations are for standard library types which implement (or contain types which implement):
-
IntoRawFd
(Unix) -
IntoRawHandle
orIntoRawSocket
(Windows).
Using [Close
] enables the handling of I/O errors which might
otherwise be ignored during drop.
BufWriter example
use std::io::{BufWriter, Result, Write};
use io_close::Close;
fn main() -> Result<()> {
let data = "hello world".as_bytes();
let mut buffer = BufWriter::new(tempfile::tempfile()?);
buffer.write_all(data)?;
buffer.close()?;
Ok(())
}