pub enum Result<T, E> {
/// Contains the success value.
Ok: T,
/// Contains the error value.
Err: E,
}Expand description
Result is a type that represents either success (Ok) or failure (Err).
Variants
Ok: T
Contains the success value.
Err: E
Contains the error value.
Trait Implementations
impl AbiEncode for Result<T, E, >
impl AbiEncode for Result<T, E, >
pub fn abi_encode(self, buffer: Buffer) -> Buffer
impl AbiDecode for Result<T, E, >
impl AbiDecode for Result<T, E, >
pub fn abi_decode(refmut buffer: BufferReader) -> Self
impl Result for Result<T, E>
impl Result for Result<T, E>
pub fn is_ok(self) -> bool
pub fn is_ok(self) -> bool
Returns whether a result contains a success value.
Returns
- [bool] - Returns
trueif the result isOk.
Examples
enum Error {
NotFound,
Invalid,
}
fn foo() {
let x: Result<u64, Error> = Result::Ok(42);
assert(x.is_ok());
let y: Result<u64, Error> = Result::Err(Error::NotFound));
assert(!y.is_ok());
}
pub fn is_err(self) -> bool
pub fn is_err(self) -> bool
Returns whether a result contains an error value.
Returns
- [bool] - Returns
trueif the result isErr.
Examples
enum Error {
NotFound,
Invalid,
}
fn foo() {
let x: Result<u64, Error> = Result::Ok(42);
assert(!x.is_err());
let y: Result<u64, Error> = Result::Err(Error::NotFound));
assert(y.is_err());
}
pub fn unwrap(self) -> T
pub fn unwrap(self) -> T
Returns the contained Ok value, consuming the self value.
Additional Information
Because this function may revert, its use is generally discouraged.
Instead, prefer to use pattern matching and handle the Err
case explicitly.
Returns
- [T] - The value contained by the result.
Reverts
- Reverts if the
Resultis theErrvariant.
Examples
enum Error {
NotFound,
Invalid,
}
fn foo() {
let x: Result<u64, Error> = Result::Ok(42);
assert(x.unwrap() == 42);
let y: Result<u64, Error> = Result::Err(Error::NotFound));
let val = y.unwrap(); // reverts
}
pub fn unwrap_or(self, default: T) -> T
pub fn unwrap_or(self, default: T) -> T
Returns the contained Ok value or a provided default.
Arguments
default: [T] - The value that is the default.
Returns
- [T] - The value of the result or the default.
Examples
enum Error {
NotFound,
Invalid,
}
fn foo() {
let x: Result<u64, Error> = Result::Ok(42);
assert(x.unwrap_or(69) == 42);
let y: Result<u64, Error> = Result::Err(Error::NotFound));
assert(y.unwrap_or(69) == 69);
}
pub fn expect(self, msg: M) -> T
pub fn expect(self, msg: M) -> T
Returns the contained Ok value, consuming the self value.
If the Result is the Err variant, logs the provided message, along with the error value.
Additional Information
Because this function may revert, its use is generally discouraged.
Instead, prefer to use pattern matching and handle the Err
case explicitly.
Arguments
msg: [M] - The message to be logged if theResultis theErrvariant.
Returns
- [T] - The value contained by the result.
Reverts
- Reverts if the
Resultis theErrvariant.
Examples
enum Error {
NotFound,
Invalid,
}
fn foo() {
let x: Result<u64, Error> = Result::Ok(42);
assert(x.expect("X is known to be 42") == 42);
let y: Result<u64, Error> = Result::Err(Error::NotFound));
let val = y.expect("Testing expect"); // reverts with `("Testing Expect", "Error::NotFound")`
}
Recommended Message Style
We recommend that expect messages are used to describe the reason you expect the Result should be Ok.
let x: Result<u64, Error> = bar(1);
let value = x.expect("bar() should never return Err with 1 as an argument");
impl PartialEq for Result<T, E>
impl PartialEq for Result<T, E>
pub fn eq(self, other: Self) -> bool
pub fn neq(self, other: Self) -> bool
pub fn neq(self, other: Self) -> bool
Evaluates if two values of the same type are not equal.
Additional Information
This function is inherited when eq() is implemented.
Arguments
other: [Self] - The value of the same type.
Returns
- [bool] -
trueif the two values are not equal, otherwisefalse.
Examples
struct MyStruct {
val: u64,
}
impl PartialEq for MyStruct {
fn eq(self, other: Self) -> bool {
self.val == other.val
}
}
fn foo() {
let struct1 = MyStruct { val: 10 };
let struct2 = MyStruct { val: 2 };
let result = struct1 != struct2;
assert(result);
}