// We support struct errors ...
#[derive(Debug, Snafu)]
#[snafu(display("An error occurred for {username}"))]
struct OneKindOfError { username: String }
// ... enum errors ...
#[derive(Debug, Snafu)]
enum AnotherKindOfError {
#[snafu(display("Unable to finish situation one"))]
SituationOne { source: OneKindOfError },
#[snafu(display("Unable to finish situation two for {user_id}"))]
SituationTwo { source: OneKindOfError, user_id: u32 },
}
// ... and opaque errors, great for exposing as part of a public API.
#[derive(Debug, Snafu)]
pub struct Error(AnotherKindOfError);
let len = cmp::min(buf.len(), <wrlen_t>::MAX as usize) as wrlen_t;
let ret = cvt(unsafe {
c::send(self.inner.as_raw(), buf.as_ptr() as *const c_void, len, MSG_NOSIGNAL)
})?;
let ret = rustix::net::send(&self.inner, buf, SendFlags::NOSIGNAL)?;
原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。