Enum frame_support::dispatch::result::Result 1.0.0[−][src]
pub enum Result<T, E> { Ok(T), Err(E), }
Expand description
Result
is a type that represents either success (Ok
) or failure (Err
).
See the module documentation for details.
Variants
Contains the success value
Contains the error value
Implementations
🔬 This is a nightly-only experimental API. (option_result_contains
)
option_result_contains
)Returns true
if the result is an Ok
value containing the given value.
Examples
#![feature(option_result_contains)] let x: Result<u32, &str> = Ok(2); assert_eq!(x.contains(&2), true); let x: Result<u32, &str> = Ok(3); assert_eq!(x.contains(&2), false); let x: Result<u32, &str> = Err("Some error message"); assert_eq!(x.contains(&2), false);
🔬 This is a nightly-only experimental API. (result_contains_err
)
result_contains_err
)Returns true
if the result is an Err
value containing the given value.
Examples
#![feature(result_contains_err)] let x: Result<u32, &str> = Ok(2); assert_eq!(x.contains_err(&"Some error message"), false); let x: Result<u32, &str> = Err("Some error message"); assert_eq!(x.contains_err(&"Some error message"), true); let x: Result<u32, &str> = Err("Some other error message"); assert_eq!(x.contains_err(&"Some error message"), false);
Converts from Result<T, E>
to Option<E>
.
Converts self
into an Option<E>
, consuming self
,
and discarding the success value, if any.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(2); assert_eq!(x.err(), None); let x: Result<u32, &str> = Err("Nothing here"); assert_eq!(x.err(), Some("Nothing here"));
Converts from &Result<T, E>
to Result<&T, &E>
.
Produces a new Result
, containing a reference
into the original, leaving the original in place.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(2); assert_eq!(x.as_ref(), Ok(&2)); let x: Result<u32, &str> = Err("Error"); assert_eq!(x.as_ref(), Err(&"Error"));
Converts from &mut Result<T, E>
to Result<&mut T, &mut E>
.
Examples
Basic usage:
fn mutate(r: &mut Result<i32, i32>) { match r.as_mut() { Ok(v) => *v = 42, Err(e) => *e = 0, } } let mut x: Result<i32, i32> = Ok(2); mutate(&mut x); assert_eq!(x.unwrap(), 42); let mut x: Result<i32, i32> = Err(13); mutate(&mut x); assert_eq!(x.unwrap_err(), 0);
Maps a Result<T, E>
to Result<U, E>
by applying a function to a
contained Ok
value, leaving an Err
value untouched.
This function can be used to compose the results of two functions.
Examples
Print the numbers on each line of a string multiplied by two.
let line = "1\n2\n3\n4\n"; for num in line.lines() { match num.parse::<i32>().map(|i| i * 2) { Ok(n) => println!("{}", n), Err(..) => {} } }
Returns the provided default (if Err
), or
applies a function to the contained value (if Ok
),
Arguments passed to map_or
are eagerly evaluated; if you are passing
the result of a function call, it is recommended to use map_or_else
,
which is lazily evaluated.
Examples
let x: Result<_, &str> = Ok("foo"); assert_eq!(x.map_or(42, |v| v.len()), 3); let x: Result<&str, _> = Err("bar"); assert_eq!(x.map_or(42, |v| v.len()), 42);
1.41.0[src]pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U where
F: FnOnce(T) -> U,
D: FnOnce(E) -> U,
pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U where
F: FnOnce(T) -> U,
D: FnOnce(E) -> U,
Maps a Result<T, E>
to U
by applying a fallback function to a
contained Err
value, or a default function to a
contained Ok
value.
This function can be used to unpack a successful result while handling an error.
Examples
Basic usage:
let k = 21; let x : Result<_, &str> = Ok("foo"); assert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3); let x : Result<&str, _> = Err("bar"); assert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
Maps a Result<T, E>
to Result<T, F>
by applying a function to a
contained Err
value, leaving an Ok
value untouched.
This function can be used to pass through a successful result while handling an error.
Examples
Basic usage:
fn stringify(x: u32) -> String { format!("error code: {}", x) } let x: Result<u32, u32> = Ok(2); assert_eq!(x.map_err(stringify), Ok(2)); let x: Result<u32, u32> = Err(13); assert_eq!(x.map_err(stringify), Err("error code: 13".to_string()));
Returns an iterator over the possibly contained value.
The iterator yields one value if the result is Result::Ok
, otherwise none.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(7); assert_eq!(x.iter().next(), Some(&7)); let x: Result<u32, &str> = Err("nothing!"); assert_eq!(x.iter().next(), None);
Returns a mutable iterator over the possibly contained value.
The iterator yields one value if the result is Result::Ok
, otherwise none.
Examples
Basic usage:
let mut x: Result<u32, &str> = Ok(7); match x.iter_mut().next() { Some(v) => *v = 40, None => {}, } assert_eq!(x, Ok(40)); let mut x: Result<u32, &str> = Err("nothing!"); assert_eq!(x.iter_mut().next(), None);
Returns res
if the result is Ok
, otherwise returns the Err
value of self
.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(2); let y: Result<&str, &str> = Err("late error"); assert_eq!(x.and(y), Err("late error")); let x: Result<u32, &str> = Err("early error"); let y: Result<&str, &str> = Ok("foo"); assert_eq!(x.and(y), Err("early error")); let x: Result<u32, &str> = Err("not a 2"); let y: Result<&str, &str> = Err("late error"); assert_eq!(x.and(y), Err("not a 2")); let x: Result<u32, &str> = Ok(2); let y: Result<&str, &str> = Ok("different result type"); assert_eq!(x.and(y), Ok("different result type"));
Calls op
if the result is Ok
, otherwise returns the Err
value of self
.
This function can be used for control flow based on Result
values.
Examples
Basic usage:
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) } fn err(x: u32) -> Result<u32, u32> { Err(x) } assert_eq!(Ok(2).and_then(sq).and_then(sq), Ok(16)); assert_eq!(Ok(2).and_then(sq).and_then(err), Err(4)); assert_eq!(Ok(2).and_then(err).and_then(sq), Err(2)); assert_eq!(Err(3).and_then(sq).and_then(sq), Err(3));
Returns res
if the result is Err
, otherwise returns the Ok
value of self
.
Arguments passed to or
are eagerly evaluated; if you are passing the
result of a function call, it is recommended to use or_else
, which is
lazily evaluated.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(2); let y: Result<u32, &str> = Err("late error"); assert_eq!(x.or(y), Ok(2)); let x: Result<u32, &str> = Err("early error"); let y: Result<u32, &str> = Ok(2); assert_eq!(x.or(y), Ok(2)); let x: Result<u32, &str> = Err("not a 2"); let y: Result<u32, &str> = Err("late error"); assert_eq!(x.or(y), Err("late error")); let x: Result<u32, &str> = Ok(2); let y: Result<u32, &str> = Ok(100); assert_eq!(x.or(y), Ok(2));
Calls op
if the result is Err
, otherwise returns the Ok
value of self
.
This function can be used for control flow based on result values.
Examples
Basic usage:
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) } fn err(x: u32) -> Result<u32, u32> { Err(x) } assert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2)); assert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2)); assert_eq!(Err(3).or_else(sq).or_else(err), Ok(9)); assert_eq!(Err(3).or_else(err).or_else(err), Err(3));
Returns the contained Ok
value or a provided default.
Arguments passed to unwrap_or
are eagerly evaluated; if you are passing
the result of a function call, it is recommended to use unwrap_or_else
,
which is lazily evaluated.
Examples
Basic usage:
let default = 2; let x: Result<u32, &str> = Ok(9); assert_eq!(x.unwrap_or(default), 9); let x: Result<u32, &str> = Err("error"); assert_eq!(x.unwrap_or(default), default);
🔬 This is a nightly-only experimental API. (option_result_unwrap_unchecked
)
newly added
🔬 This is a nightly-only experimental API. (option_result_unwrap_unchecked
)
newly added
Returns the contained Ok
value, consuming the self
value,
without checking that the value is not an Err
.
Safety
Calling this method on an Err
is undefined behavior.
Examples
#![feature(option_result_unwrap_unchecked)] let x: Result<u32, &str> = Ok(2); assert_eq!(unsafe { x.unwrap_unchecked() }, 2);
#![feature(option_result_unwrap_unchecked)] let x: Result<u32, &str> = Err("emergency failure"); unsafe { x.unwrap_unchecked(); } // Undefined behavior!
🔬 This is a nightly-only experimental API. (option_result_unwrap_unchecked
)
newly added
🔬 This is a nightly-only experimental API. (option_result_unwrap_unchecked
)
newly added
Returns the contained Err
value, consuming the self
value,
without checking that the value is not an Ok
.
Safety
Calling this method on an Ok
is undefined behavior.
Examples
#![feature(option_result_unwrap_unchecked)] let x: Result<u32, &str> = Ok(2); unsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
#![feature(option_result_unwrap_unchecked)] let x: Result<u32, &str> = Err("emergency failure"); assert_eq!(unsafe { x.unwrap_err_unchecked() }, "emergency failure");
🔬 This is a nightly-only experimental API. (result_copied
)
newly added
🔬 This is a nightly-only experimental API. (result_copied
)
newly added
Maps a Result<&T, E>
to a Result<T, E>
by copying the contents of the
Ok
part.
Examples
#![feature(result_copied)] let val = 12; let x: Result<&i32, i32> = Ok(&val); assert_eq!(x, Ok(&12)); let copied = x.copied(); assert_eq!(copied, Ok(12));
🔬 This is a nightly-only experimental API. (result_copied
)
newly added
🔬 This is a nightly-only experimental API. (result_copied
)
newly added
Maps a Result<&mut T, E>
to a Result<T, E>
by copying the contents of the
Ok
part.
Examples
#![feature(result_copied)] let mut val = 12; let x: Result<&mut i32, i32> = Ok(&mut val); assert_eq!(x, Ok(&mut 12)); let copied = x.copied(); assert_eq!(copied, Ok(12));
🔬 This is a nightly-only experimental API. (result_cloned
)
newly added
🔬 This is a nightly-only experimental API. (result_cloned
)
newly added
Maps a Result<&T, E>
to a Result<T, E>
by cloning the contents of the
Ok
part.
Examples
#![feature(result_cloned)] let val = 12; let x: Result<&i32, i32> = Ok(&val); assert_eq!(x, Ok(&12)); let cloned = x.cloned(); assert_eq!(cloned, Ok(12));
🔬 This is a nightly-only experimental API. (result_cloned
)
newly added
🔬 This is a nightly-only experimental API. (result_cloned
)
newly added
Maps a Result<&mut T, E>
to a Result<T, E>
by cloning the contents of the
Ok
part.
Examples
#![feature(result_cloned)] let mut val = 12; let x: Result<&mut i32, i32> = Ok(&mut val); assert_eq!(x, Ok(&mut 12)); let cloned = x.cloned(); assert_eq!(cloned, Ok(12));
Returns the contained Ok
value, consuming the self
value.
Panics
Panics if the value is an Err
, with a panic message including the
passed message, and the content of the Err
.
Examples
Basic usage:
let x: Result<u32, &str> = Err("emergency failure"); x.expect("Testing expect"); // panics with `Testing expect: emergency failure`
Returns the contained Ok
value, consuming the self
value.
Because this function may panic, its use is generally discouraged.
Instead, prefer to use pattern matching and handle the Err
case explicitly, or call unwrap_or
, unwrap_or_else
, or
unwrap_or_default
.
Panics
Panics if the value is an Err
, with a panic message provided by the
Err
’s value.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(2); assert_eq!(x.unwrap(), 2);
let x: Result<u32, &str> = Err("emergency failure"); x.unwrap(); // panics with `emergency failure`
Returns the contained Err
value, consuming the self
value.
Panics
Panics if the value is an Ok
, with a panic message including the
passed message, and the content of the Ok
.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(10); x.expect_err("Testing expect_err"); // panics with `Testing expect_err: 10`
Returns the contained Err
value, consuming the self
value.
Panics
Panics if the value is an Ok
, with a custom panic message provided
by the Ok
’s value.
Examples
let x: Result<u32, &str> = Ok(2); x.unwrap_err(); // panics with `2`
let x: Result<u32, &str> = Err("emergency failure"); assert_eq!(x.unwrap_err(), "emergency failure");
Returns the contained Ok
value or a default
Consumes the self
argument then, if Ok
, returns the contained
value, otherwise if Err
, returns the default value for that
type.
Examples
Converts a string to an integer, turning poorly-formed strings
into 0 (the default value for integers). parse
converts
a string to any other type that implements FromStr
, returning an
Err
on error.
let good_year_from_input = "1909"; let bad_year_from_input = "190blarg"; let good_year = good_year_from_input.parse().unwrap_or_default(); let bad_year = bad_year_from_input.parse().unwrap_or_default(); assert_eq!(1909, good_year); assert_eq!(0, bad_year);
🔬 This is a nightly-only experimental API. (unwrap_infallible
)
newly added
🔬 This is a nightly-only experimental API. (unwrap_infallible
)
newly added
Returns the contained Ok
value, but never panics.
Unlike unwrap
, this method is known to never panic on the
result types it is implemented for. Therefore, it can be used
instead of unwrap
as a maintainability safeguard that will fail
to compile if the error type of the Result
is later changed
to an error that can actually occur.
Examples
Basic usage:
fn only_good_news() -> Result<String, !> { Ok("this is fine".into()) } let s: String = only_good_news().into_ok(); println!("{}", s);
🔬 This is a nightly-only experimental API. (unwrap_infallible
)
newly added
🔬 This is a nightly-only experimental API. (unwrap_infallible
)
newly added
Returns the contained Err
value, but never panics.
Unlike unwrap_err
, this method is known to never panic on the
result types it is implemented for. Therefore, it can be used
instead of unwrap_err
as a maintainability safeguard that will fail
to compile if the ok type of the Result
is later changed
to a type that can actually occur.
Examples
Basic usage:
fn only_bad_news() -> Result<!, String> { Err("Oops, it failed".into()) } let error: String = only_bad_news().into_err(); println!("{}", error);
Converts from Result<T, E>
(or &Result<T, E>
) to Result<&<T as Deref>::Target, &E>
.
Coerces the Ok
variant of the original Result
via Deref
and returns the new Result
.
Examples
let x: Result<String, u32> = Ok("hello".to_string()); let y: Result<&str, &u32> = Ok("hello"); assert_eq!(x.as_deref(), y); let x: Result<String, u32> = Err(42); let y: Result<&str, &u32> = Err(&42); assert_eq!(x.as_deref(), y);
Converts from Result<T, E>
(or &mut Result<T, E>
) to Result<&mut <T as DerefMut>::Target, &mut E>
.
Coerces the Ok
variant of the original Result
via DerefMut
and returns the new Result
.
Examples
let mut s = "HELLO".to_string(); let mut x: Result<String, u32> = Ok("hello".to_string()); let y: Result<&mut str, &mut u32> = Ok(&mut s); assert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y); let mut i = 42; let mut x: Result<String, u32> = Err(42); let y: Result<&mut str, &mut u32> = Err(&mut i); assert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
Transposes a Result
of an Option
into an Option
of a Result
.
Ok(None)
will be mapped to None
.
Ok(Some(_))
and Err(_)
will be mapped to Some(Ok(_))
and Some(Err(_))
.
Examples
#[derive(Debug, Eq, PartialEq)] struct SomeErr; let x: Result<Option<i32>, SomeErr> = Ok(Some(5)); let y: Option<Result<i32, SomeErr>> = Some(Ok(5)); assert_eq!(x.transpose(), y);
🔬 This is a nightly-only experimental API. (result_flattening
)
result_flattening
)Converts from Result<Result<T, E>, E>
to Result<T, E>
Examples
Basic usage:
#![feature(result_flattening)] let x: Result<Result<&'static str, u32>, u32> = Ok(Ok("hello")); assert_eq!(Ok("hello"), x.flatten()); let x: Result<Result<&'static str, u32>, u32> = Ok(Err(6)); assert_eq!(Err(6), x.flatten()); let x: Result<Result<&'static str, u32>, u32> = Err(6); assert_eq!(Err(6), x.flatten());
Flattening only removes one level of nesting at a time:
#![feature(result_flattening)] let x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok("hello"))); assert_eq!(Ok(Ok("hello")), x.flatten()); assert_eq!(Ok("hello"), x.flatten().flatten());
🔬 This is a nightly-only experimental API. (result_into_ok_or_err
)
newly added
🔬 This is a nightly-only experimental API. (result_into_ok_or_err
)
newly added
Returns the Ok
value if self
is Ok
, and the Err
value if
self
is Err
.
In other words, this function returns the value (the T
) of a
Result<T, T>
, regardless of whether or not that result is Ok
or
Err
.
This can be useful in conjunction with APIs such as
Atomic*::compare_exchange
, or slice::binary_search
, but only in
cases where you don’t care if the result was Ok
or not.
Examples
#![feature(result_into_ok_or_err)] let ok: Result<u32, u32> = Ok(3); let err: Result<u32, u32> = Err(4); assert_eq!(ok.into_ok_or_err(), 3); assert_eq!(err.into_ok_or_err(), 4);
Trait Implementations
Wrap the error value with additional context.
Attempt to deserialise the value from input.
Attempt to skip the encoded value from input. Read more
fn encoded_fixed_size() -> Option<usize>
fn encoded_fixed_size() -> Option<usize>
Returns the fixed encoded size of the type. Read more
impl<'de, T, E> Deserialize<'de> for Result<T, E> where
T: Deserialize<'de>,
E: Deserialize<'de>,
impl<'de, T, E> Deserialize<'de> for Result<T, E> where
T: Deserialize<'de>,
E: Deserialize<'de>,
pub fn deserialize<D>(
deserializer: D
) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
pub fn deserialize<D>(
deserializer: D
) -> Result<Result<T, E>, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Convert self to a slice and append it to the destination.
Convert self to an owned vector.
fn using_encoded<R, F>(&self, f: F) -> R where
F: FnOnce(&[u8]) -> R,
fn using_encoded<R, F>(&self, f: F) -> R where
F: FnOnce(&[u8]) -> R,
Convert self to a slice and then invoke the given closure with it.
fn encoded_size(&self) -> usize
fn encoded_size(&self) -> usize
Calculates the encoded size. Read more
Performs the conversion.
pub fn from(
invalid_transaction: InvalidTransaction
) -> Result<ValidTransaction, TransactionValidityError>
pub fn from(
invalid_transaction: InvalidTransaction
) -> Result<ValidTransaction, TransactionValidityError>
Performs the conversion.
pub fn from(
unknown_transaction: UnknownTransaction
) -> Result<ValidTransaction, TransactionValidityError>
pub fn from(
unknown_transaction: UnknownTransaction
) -> Result<ValidTransaction, TransactionValidityError>
Performs the conversion.
pub fn from(
builder: ValidTransactionBuilder
) -> Result<ValidTransaction, TransactionValidityError>
pub fn from(
builder: ValidTransactionBuilder
) -> Result<ValidTransaction, TransactionValidityError>
Performs the conversion.
Takes each element in the Iterator
: if it is an Err
, no further
elements are taken, and the Err
is returned. Should no Err
occur, a
container with the values of each Result
is returned.
Here is an example which increments every integer in a vector, checking for overflow:
let v = vec![1, 2]; let res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| x.checked_add(1).ok_or("Overflow!") ).collect(); assert_eq!(res, Ok(vec![2, 3]));
Here is another example that tries to subtract one from another list of integers, this time checking for underflow:
let v = vec![1, 2, 0]; let res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| x.checked_sub(1).ok_or("Underflow!") ).collect(); assert_eq!(res, Err("Underflow!"));
Here is a variation on the previous example, showing that no
further elements are taken from iter
after the first Err
.
let v = vec![3, 2, 1, 10]; let mut shared = 0; let res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| { shared += x; x.checked_sub(2).ok_or("Underflow!") }).collect(); assert_eq!(res, Err("Underflow!")); assert_eq!(shared, 6);
Since the third element caused an underflow, no further elements were taken,
so the final value of shared
is 6 (= 3 + 2 + 1
), not 16.
try_trait_v2
)Constructs the type from a compatible Residual
type. Read more
type Future = FutureResult<T, E>
type Future = FutureResult<T, E>
The future that this type can be converted into.
type Item = T
type Item = T
The item that the future may resolve with.
type Error = E
type Error = E
The error that the future may resolve with.
Consumes this object and produces a future.
Returns a consuming iterator over the possibly contained value.
The iterator yields one value if the result is Result::Ok
, otherwise none.
Examples
Basic usage:
let x: Result<u32, &str> = Ok(5); let v: Vec<u32> = x.into_iter().collect(); assert_eq!(v, [5]); let x: Result<u32, &str> = Err("nothing!"); let v: Vec<u32> = x.into_iter().collect(); assert_eq!(v, []);
type Item = T
type Item = T
The type of the elements being iterated over.
impl<T, E> MallocSizeOf for Result<T, E> where
T: MallocSizeOf,
E: MallocSizeOf,
impl<T, E> MallocSizeOf for Result<T, E> where
T: MallocSizeOf,
E: MallocSizeOf,
Measure the heap usage of all descendant heap-allocated structures, but
not the space taken up by the value itself.
If T::size_of
is a constant, consider implementing constant_size
as well. Read more
pub fn constant_size() -> Option<usize>
pub fn constant_size() -> Option<usize>
Used to optimize MallocSizeOf
implementation for collections
like Vec
and HashMap
to avoid iterating over them unnecessarily.
The Self: Sized
bound is for object safety. Read more
impl<T, E> MaxEncodedLen for Result<T, E> where
T: MaxEncodedLen,
E: MaxEncodedLen,
impl<T, E> MaxEncodedLen for Result<T, E> where
T: MaxEncodedLen,
E: MaxEncodedLen,
pub fn max_encoded_len() -> usize
pub fn max_encoded_len() -> usize
Upper bound, in bytes, of the maximum encoded size of this item.
This method returns an ordering between self
and other
values if one exists. Read more
This method tests less than (for self
and other
) and is used by the <
operator. Read more
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
This method tests greater than (for self
and other
) and is used by the >
operator. Read more
pub fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
pub fn serialize<S>(
&self,
serializer: S
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> where
S: Serializer,
Serialize this value into the given Serde serializer. Read more
Takes each element in the Iterator
: if it is an Err
, no further
elements are taken, and the Err
is returned. Should no Err
occur, the sum of all elements is returned.
Examples
This sums up every integer in a vector, rejecting the sum if a negative element is encountered:
let v = vec![1, 2]; let res: Result<i32, &'static str> = v.iter().map(|&x: &i32| if x < 0 { Err("Negative element found") } else { Ok(x) } ).sum(); assert_eq!(res, Ok(3));
type Output = T
type Output = T
try_trait_v2
)The type of the value produced by ?
when not short-circuiting.
type Residual = Result<Infallible, E>
type Residual = Result<Infallible, E>
try_trait_v2
)The type of the value passed to FromResidual::from_residual
as part of ?
when short-circuiting. Read more
try_trait_v2
)Constructs the type from its Output
type. Read more
try_trait_v2
)Used in ?
to decide whether the operator should produce a value
(because this returned ControlFlow::Continue
)
or propagate a value back to the caller
(because this returned ControlFlow::Break
). Read more
impl<T, LikeT, E, LikeE> EncodeLike<Result<LikeT, LikeE>> for Result<T, E> where
T: EncodeLike<LikeT>,
E: EncodeLike<LikeE>,
LikeT: Encode,
LikeE: Encode,
Auto Trait Implementations
impl<T, E> RefUnwindSafe for Result<T, E> where
E: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, E> UnwindSafe for Result<T, E> where
E: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
impl<T> DecodeAll for T where
T: Decode,
impl<T> DecodeAll for T where
T: Decode,
impl<T> DecodeLimit for T where
T: Decode,
impl<T> DecodeLimit for T where
T: Decode,
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
type SelfInstance = T
type SelfInstance = T
As Self
can be an unsized type, it needs to be represented by a sized type at the host.
This SelfInstance
is the sized type. Read more
pub fn from_ffi_value(
context: &mut dyn FunctionContext,
arg: <<T as PassBy>::PassBy as RIType>::FFIType
) -> Result<T, String>
pub fn from_ffi_value(
context: &mut dyn FunctionContext,
arg: <<T as PassBy>::PassBy as RIType>::FFIType
) -> Result<T, String>
Create SelfInstance
from the given
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
pub fn into_ffi_value(
self,
context: &mut dyn FunctionContext
) -> Result<<<T as PassBy>::PassBy as RIType>::FFIType, String>
pub fn into_ffi_value(
self,
context: &mut dyn FunctionContext
) -> Result<<<T as PassBy>::PassBy as RIType>::FFIType, String>
Convert self
into a ffi value.
impl<T> KeyedVec for T where
T: Codec,
impl<T> KeyedVec for T where
T: Codec,
fn malloc_size_of(&self) -> usize
fn malloc_size_of(&self) -> usize
Method to launch a heapsize measurement with a fresh state. Read more
type Output = T
type Output = T
Should always be Self
The counterpart to unchecked_from
.
Consume self to return an equivalent value of T
.
pub fn vzip(self) -> V
impl<'_, '_, T> EncodeLike<&'_ &'_ T> for T where
T: Encode,
impl<'_, T> EncodeLike<&'_ T> for T where
T: Encode,
impl<'_, T> EncodeLike<&'_ mut T> for T where
T: Encode,
impl<T> EncodeLike<Arc<T>> for T where
T: Encode,
impl<T> EncodeLike<Box<T, Global>> for T where
T: Encode,
impl<'a, T> EncodeLike<Cow<'a, T>> for T where
T: ToOwned + Encode,
impl<T> EncodeLike<Rc<T>> for T where
T: Encode,
impl<S> FullCodec for S where
S: Decode + FullEncode,
impl<S> FullEncode for S where
S: Encode + EncodeLike<S>,
impl<T> MaybeDebug for T where
T: Debug,
impl<T> MaybeDebug for T where
T: Debug,