Coverage Report

Created: 2025-12-31 06:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/rust/registry/src/index.crates.io-1949cf8c6b5b557f/io-lifetimes-2.0.4/src/traits.rs
Line
Count
Source
1
#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
2
use crate::OwnedFd;
3
#[cfg(windows)]
4
use crate::{OwnedHandle, OwnedSocket};
5
6
/// A trait to express the ability to consume an object and acquire ownership
7
/// of its file descriptor.
8
#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
9
#[deprecated(
10
    since = "1.0.0",
11
    note = "`IntoFd` is replaced by `From<...> for OwnedFd` or `Into<OwnedFd>`"
12
)]
13
pub trait IntoFd {
14
    /// Consumes this object, returning the underlying file descriptor.
15
    ///
16
    /// # Example
17
    ///
18
    /// ```rust,no_run
19
    /// use std::fs::File;
20
    /// # use std::io;
21
    /// use io_lifetimes::{IntoFd, OwnedFd};
22
    ///
23
    /// let f = File::open("foo.txt")?;
24
    /// let owned_fd: OwnedFd = f.into_fd();
25
    /// # Ok::<(), io::Error>(())
26
    /// ```
27
    fn into_fd(self) -> OwnedFd;
28
}
29
30
/// A trait to express the ability to consume an object and acquire ownership
31
/// of its handle.
32
#[cfg(windows)]
33
#[deprecated(
34
    since = "1.0.0",
35
    note = "`IntoHandle` is replaced by `From<...> for OwnedHandle` or `Into<OwnedHandle>`"
36
)]
37
pub trait IntoHandle {
38
    /// Consumes this object, returning the underlying handle.
39
    ///
40
    /// # Example
41
    ///
42
    /// ```rust,no_run
43
    /// use std::fs::File;
44
    /// # use std::io;
45
    /// use io_lifetimes::{IntoHandle, OwnedHandle};
46
    ///
47
    /// let f = File::open("foo.txt")?;
48
    /// let owned_handle: OwnedHandle = f.into_handle();
49
    /// # Ok::<(), io::Error>(())
50
    /// ```
51
    fn into_handle(self) -> OwnedHandle;
52
}
53
54
/// A trait to express the ability to consume an object and acquire ownership
55
/// of its socket.
56
#[cfg(windows)]
57
#[deprecated(
58
    since = "1.0.0",
59
    note = "`IntoSocket` is replaced by `From<...> for OwnedSocket` or `Into<OwnedSocket>`"
60
)]
61
pub trait IntoSocket {
62
    /// Consumes this object, returning the underlying socket.
63
    fn into_socket(self) -> OwnedSocket;
64
}
65
66
/// A trait to express the ability to construct an object from a file
67
/// descriptor.
68
#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
69
pub trait FromFd {
70
    /// Constructs a new instance of `Self` from the given file descriptor.
71
    ///
72
    /// # Example
73
    ///
74
    /// ```rust,no_run
75
    /// use std::fs::File;
76
    /// # use std::io;
77
    /// use io_lifetimes::{FromFd, IntoFd, OwnedFd};
78
    ///
79
    /// let f = File::open("foo.txt")?;
80
    /// let owned_fd: OwnedFd = f.into_fd();
81
    /// let f = File::from_fd(owned_fd);
82
    /// # Ok::<(), io::Error>(())
83
    /// ```
84
    #[deprecated(
85
        since = "1.0.0",
86
        note = "`FromFd::from_fd` is replaced by `From<OwnedFd>::from`"
87
    )]
88
    fn from_fd(owned: OwnedFd) -> Self;
89
90
    /// Constructs a new instance of `Self` from the given file descriptor
91
    /// converted from `into_owned`.
92
    ///
93
    /// # Example
94
    ///
95
    /// ```rust,no_run
96
    /// use std::fs::File;
97
    /// # use std::io;
98
    /// use io_lifetimes::{FromFd, IntoFd};
99
    ///
100
    /// let f = File::open("foo.txt")?;
101
    /// let f = File::from_into_fd(f);
102
    /// # Ok::<(), io::Error>(())
103
    /// ```
104
    #[inline]
105
347k
    fn from_into_fd<Owned: Into<OwnedFd>>(into_owned: Owned) -> Self
106
347k
    where
107
347k
        Self: Sized + From<OwnedFd>,
108
    {
109
347k
        Self::from(into_owned.into())
110
347k
    }
111
}
112
113
/// A trait to express the ability to construct an object from a handle.
114
#[cfg(windows)]
115
pub trait FromHandle {
116
    /// Constructs a new instance of `Self` from the given handle.
117
    ///
118
    /// # Example
119
    ///
120
    /// ```rust,no_run
121
    /// use std::fs::File;
122
    /// # use std::io;
123
    /// use io_lifetimes::{FromHandle, IntoHandle, OwnedHandle};
124
    ///
125
    /// let f = File::open("foo.txt")?;
126
    /// let owned_handle: OwnedHandle = f.into_handle();
127
    /// let f = File::from_handle(owned_handle);
128
    /// # Ok::<(), io::Error>(())
129
    /// ```
130
    #[deprecated(
131
        since = "1.0.0",
132
        note = "`FromHandle::from_handle` is replaced by `From<OwnedHandle>::from`"
133
    )]
134
    fn from_handle(owned: OwnedHandle) -> Self;
135
136
    /// Constructs a new instance of `Self` from the given handle converted
137
    /// from `into_owned`.
138
    ///
139
    /// # Example
140
    ///
141
    /// ```rust,no_run
142
    /// use std::fs::File;
143
    /// # use std::io;
144
    /// use io_lifetimes::{FromHandle, IntoHandle};
145
    ///
146
    /// let f = File::open("foo.txt")?;
147
    /// let f = File::from_into_handle(f);
148
    /// # Ok::<(), io::Error>(())
149
    /// ```
150
    #[inline]
151
    fn from_into_handle<Owned: Into<OwnedHandle>>(into_owned: Owned) -> Self
152
    where
153
        Self: Sized + From<OwnedHandle>,
154
    {
155
        Self::from(into_owned.into())
156
    }
157
}
158
159
/// A trait to express the ability to construct an object from a socket.
160
#[cfg(windows)]
161
pub trait FromSocket {
162
    /// Constructs a new instance of `Self` from the given socket.
163
    #[deprecated(
164
        since = "1.0.0",
165
        note = "`FromSocket::from_socket` is replaced by `From<OwnedSocket>::from`"
166
    )]
167
    fn from_socket(owned: OwnedSocket) -> Self;
168
169
    /// Constructs a new instance of `Self` from the given socket converted
170
    /// from `into_owned`.
171
    #[inline]
172
    fn from_into_socket<Owned: Into<OwnedSocket>>(into_owned: Owned) -> Self
173
    where
174
        Self: Sized + From<OwnedSocket>,
175
    {
176
        Self::from(into_owned.into())
177
    }
178
}