conch_runtime_pshaw/io/
file_desc_wrapper.rs1use crate::io::FileDesc;
2use std::io;
3use std::rc::Rc;
4use std::sync::Arc;
5
6pub trait FileDescWrapper: Sized {
8 fn try_unwrap(self) -> io::Result<FileDesc>;
10}
11
12impl FileDescWrapper for FileDesc {
13 fn try_unwrap(self) -> io::Result<FileDesc> {
14 Ok(self)
15 }
16}
17
18impl FileDescWrapper for Box<FileDesc> {
19 fn try_unwrap(self) -> io::Result<FileDesc> {
20 Ok(*self)
21 }
22}
23
24impl FileDescWrapper for Rc<FileDesc> {
25 fn try_unwrap(self) -> io::Result<FileDesc> {
26 Rc::try_unwrap(self).or_else(|rc| rc.duplicate())
27 }
28}
29
30impl FileDescWrapper for Arc<FileDesc> {
31 fn try_unwrap(self) -> io::Result<FileDesc> {
32 Arc::try_unwrap(self).or_else(|arc| arc.duplicate())
33 }
34}