File tree Expand file tree Collapse file tree 2 files changed +20
-5
lines changed Expand file tree Collapse file tree 2 files changed +20
-5
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: 01c0971172578ac170b3ae07c35ae416644ca1ef
2
+ refs/heads/master: 65a1287f53c11718fa2cb153f2046af701c9cf9a
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: eb8fd119c65c67f3b1b8268cc7341c22d39b7b61
5
5
refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
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