File tree 1 file changed +19
-4
lines changed 1 file changed +19
-4
lines changed Original file line number Diff line number Diff line change @@ -1817,14 +1817,29 @@ struct Stack<T> {
1817
1817
elements: ~[mut T]
1818
1818
}
1819
1819
1820
- enum Maybe <T> {
1821
- Just (T),
1822
- Nothing
1820
+ enum Option <T> {
1821
+ Some (T),
1822
+ None
1823
1823
}
1824
1824
~~~~
1825
1825
1826
1826
These declarations can be instantiated to valid types like ` Set<int> ` ,
1827
- ` Stack<int> ` and ` Maybe<int> ` .
1827
+ ` Stack<int> ` and ` Option<int> ` .
1828
+
1829
+ The last type in that example, ` Option ` , appears frequently in Rust code.
1830
+ Because Rust does not have null pointers (except in unsafe code), we need
1831
+ another way to write a function whose result isn't defined on every possible
1832
+ combination of arguments of the appropriate types. The usual way is to write
1833
+ a function that returns ` Option<T> ` instead of ` T ` .
1834
+
1835
+ ~~~~
1836
+ fn radius(shape: Shape) -> Option<float> {
1837
+ match shape {
1838
+ Circle(_, radius) => Some(radius),
1839
+ Rectangle(*) => None
1840
+ }
1841
+ }
1842
+ ~~~~
1828
1843
1829
1844
The Rust compiler compiles generic functions very efficiently by
1830
1845
* monomorphizing* them. * Monomorphization* is a fancy name for a simple
You can’t perform that action at this time.
0 commit comments