ʰ
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
к
𝘎(