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
2
refs/heads/master: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
- refs/heads/snap-stage3: 01c0971172578ac170b3ae07c35ae416644ca1ef
4
+ refs/heads/snap-stage3: 65a1287f53c11718fa2cb153f2046af701c9cf9a
5
5
refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
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