libstd/sys/*/net: very minor clean up of cvt*() utility functions.
Signed-off-by: NODA, Kai <nodakai@gmail.com>
This commit is contained in:
parent
346d0d5175
commit
bf94aefd5a
@ -61,27 +61,28 @@ fn last_error() -> io::Error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Checks if the signed integer is the Windows constant `SOCKET_ERROR` (-1)
|
/// Checks if the signed integer is the Windows constant `SOCKET_ERROR` (-1)
|
||||||
/// and if so, returns the last error from the Windows socket interface. . This
|
/// and if so, returns the last error from the Windows socket interface. This
|
||||||
/// function must be called before another call to the socket API is made.
|
/// function must be called before another call to the socket API is made.
|
||||||
pub fn cvt<T: One + Neg<Output=T> + PartialEq>(t: T) -> io::Result<T> {
|
pub fn cvt<T: One + PartialEq + Neg<Output=T>>(t: T) -> io::Result<T> {
|
||||||
let one: T = T::one();
|
if t == -T::one() {
|
||||||
if t == -one {
|
|
||||||
Err(last_error())
|
Err(last_error())
|
||||||
} else {
|
} else {
|
||||||
Ok(t)
|
Ok(t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Provides the functionality of `cvt` for the return values of `getaddrinfo`
|
/// A variant of `cvt` for `getaddrinfo` which return 0 for a success.
|
||||||
/// and similar, meaning that they return an error if the return value is 0.
|
|
||||||
pub fn cvt_gai(err: c_int) -> io::Result<()> {
|
pub fn cvt_gai(err: c_int) -> io::Result<()> {
|
||||||
if err == 0 { return Ok(()) }
|
if err == 0 {
|
||||||
cvt(err).map(|_| ())
|
Ok(())
|
||||||
|
} else {
|
||||||
|
Err(last_error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Provides the functionality of `cvt` for a closure.
|
/// Just to provide the same interface as sys/unix/net.rs
|
||||||
pub fn cvt_r<T, F>(mut f: F) -> io::Result<T>
|
pub fn cvt_r<T, F>(mut f: F) -> io::Result<T>
|
||||||
where F: FnMut() -> T, T: One + Neg<Output=T> + PartialEq
|
where T: One + PartialEq + Neg<Output=T>, F: FnMut() -> T
|
||||||
{
|
{
|
||||||
cvt(f())
|
cvt(f())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user