ʰ
Size: a a a
ʰ
S[
S[
ʰ
ʰ
ʰ
S[
S[
From
друг в друга могут автоматически конвертится через оператор ?
. вот тебе пример (snafu делает всё автоматически и немного больше, чем показано здесь)#[derive(Debug)]
struct AnotherError(i32);
#[derive(Debug)]
struct ContextError(&'static str);
#[derive(Debug)]
enum Error {
AnotherError { source: AnotherError },
ContextError { source: ContextError },
}
impl From<AnotherError> for Error {
fn from(e: AnotherError) -> Self {
Self::AnotherError { source: e }
}
}
impl From<ContextError> for Error {
fn from(e: ContextError) -> Self {
Self::ContextError { source: e }
}
}
fn another_fn() -> Result<(), AnotherError> {
Err(AnotherError(42))
}
fn context_fn() -> Result<(), ContextError> {
Err(ContextError("oops..."))
}
fn fallible_fn() -> Result<(), Error> {
another_fn()?;
context_fn()?;
Ok(())
}
ʰ
From
друг в друга могут автоматически конвертится через оператор ?
. вот тебе пример (snafu делает всё автоматически и немного больше, чем показано здесь)#[derive(Debug)]
struct AnotherError(i32);
#[derive(Debug)]
struct ContextError(&'static str);
#[derive(Debug)]
enum Error {
AnotherError { source: AnotherError },
ContextError { source: ContextError },
}
impl From<AnotherError> for Error {
fn from(e: AnotherError) -> Self {
Self::AnotherError { source: e }
}
}
impl From<ContextError> for Error {
fn from(e: ContextError) -> Self {
Self::ContextError { source: e }
}
}
fn another_fn() -> Result<(), AnotherError> {
Err(AnotherError(42))
}
fn context_fn() -> Result<(), ContextError> {
Err(ContextError("oops..."))
}
fn fallible_fn() -> Result<(), Error> {
another_fn()?;
context_fn()?;
Ok(())
}
S[
From
, получаешь Into
в подарокTryFrom
, получаешь TryInto
в подарокDisplay
, получаешь ToString
в подарокDeref<Target = [T]>
, получаешь Index<usize>
в подарокf
R
l
P
P
к
𝘎(