mirror of
https://github.com/rust-lang/rustlings.git
synced 2026-01-08 19:59:19 +00:00
34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
# Options
|
||
|
||
Type Option represents an optional value: every Option is either Some and contains a value, or None, and does not.
|
||
Option types are very common in Rust code, as they have a number of uses:
|
||
|
||
- Initial values
|
||
- Return values for functions that are not defined over their entire input range (partial functions)
|
||
- Return value for otherwise reporting simple errors, where None is returned on error
|
||
- Optional struct fields
|
||
- Struct fields that can be loaned or "taken"
|
||
- Optional function arguments
|
||
- Nullable pointers
|
||
- Swapping things out of difficult situations
|
||
|
||
## Further Information
|
||
|
||
- [Option Enum Format](https://doc.rust-lang.org/stable/book/ch10-01-syntax.html#in-enum-definitions)
|
||
- [Option Module Documentation](https://doc.rust-lang.org/std/option/)
|
||
- [Option Enum Documentation](https://doc.rust-lang.org/std/option/enum.Option.html)
|
||
- [if let](https://doc.rust-lang.org/rust-by-example/flow_control/if_let.html)
|
||
- [while let](https://doc.rust-lang.org/rust-by-example/flow_control/while_let.html)
|
||
|
||
|
||
<!--
|
||
quetsion mark operator usage along with option
|
||
fn add_last_numbers(stack: &mut Vec<i32>) -> Option<i32> {
|
||
Some(stack.pop()? + stack.pop()?)
|
||
}
|
||
Run
|
||
It’s much nicer!
|
||
|
||
Ending the expression with ? will result in the Some’s unwrapped value, unless the result is None, in which case None is returned early from the enclosing function.
|
||
|
||
? can be used in functions that return Option because of the early return of None that it provides. --> |