@@ -195,9 +195,11 @@ The second point is the `println!()` part. This is calling a Rust **macro**,
195195which is how metaprogramming is done in Rust. If it were a function instead, it
196196would look like this: ` println() ` . For our purposes, we don't need to worry
197197about this difference. Just know that sometimes, you'll see a ` ! ` , and that
198- means that you're calling a macro instead of a normal function. One last thing
199- to mention: Rust's macros are significantly different than C macros, if you've
200- used those. Don't be scared of using macros. We'll get to the details
198+ means that you're calling a macro instead of a normal function. Rust implements
199+ ` println! ` as a macro rather than a function for good reasons, but that's a
200+ very advanced topic. You'll learn more when we talk about macros later. One
201+ last thing to mention: Rust's macros are significantly different than C macros,
202+ if you've used those. Don't be scared of using macros. We'll get to the details
201203eventually, you'll just have to trust us for now.
202204
203205Next, ` "Hello, world!" ` is a ** string** . Strings are a surprisingly complicated
@@ -659,14 +661,12 @@ error: mismatched types: expected `int` but found `()` (expected int but found (
659661```
660662
661663We expected an integer, but we got ` () ` . ` () ` is pronounced 'unit', and is a
662- special type in Rust's type system. ` () ` is different than ` null ` in other
663- languages, because ` () ` is distinct from other types. For example, in C, ` null `
664- is a valid value for a variable of type ` int ` . In Rust, ` () ` is _ not_ a valid
665- value for a variable of type ` int ` . It's only a valid value for variables of
666- the type ` () ` , which aren't very useful. Remember how we said statements don't
667- return a value? Well, that's the purpose of unit in this case. The semicolon
668- turns any expression into a statement by throwing away its value and returning
669- unit instead.
664+ special type in Rust's type system. In Rust, ` () ` is _ not_ a valid value for a
665+ variable of type ` int ` . It's only a valid value for variables of the type ` () ` ,
666+ which aren't very useful. Remember how we said statements don't return a value?
667+ Well, that's the purpose of unit in this case. The semicolon turns any
668+ expression into a statement by throwing away its value and returning unit
669+ instead.
670670
671671There's one more time in which you won't see a semicolon at the end of a line
672672of Rust code. For that, we'll need our next concept: functions.
@@ -1680,11 +1680,11 @@ just `int`s.
16801680
16811681Rust provides a method on these ` IoResult<T> ` s called ` ok() ` , which does the
16821682same thing as our ` match ` statement, but assuming that we have a valid value.
1683- If we don't, it will terminate our program. In this case, if we can't get
1684- input, our program doesn 't work, so we're okay with that . In most cases, we
1685- would want to handle the error case explicitly. The result of ` ok() ` has a
1686- method, ` expect() ` , which allows us to give an error message if this crash
1687- happens.
1683+ We then call ` expect() ` on the result, which will terminate our program if we
1684+ don 't have a valid value . In this case, if we can't get input, our program
1685+ doesn't work, so we're okay with that. In most cases, we would want to handle
1686+ the error case explicitly. ` expect() ` allows us to give an error message if
1687+ this crash happens.
16881688
16891689We will cover the exact details of how all of this works later in the Guide.
16901690For now, this gives you enough of a basic understanding to work with.
@@ -2030,7 +2030,7 @@ fn main() {
20302030 match cmp(input, secret_number) {
20312031 Less => println!("Too small!"),
20322032 Greater => println!("Too big!"),
2033- Equal => { println!("You win!"); } ,
2033+ Equal => println!("You win!"),
20342034 }
20352035}
20362036
@@ -2727,7 +2727,8 @@ mod hello {
27272727}
27282728```
27292729
2730- This will work:
2730+ Usage of the ` pub ` keyword is sometimes called 'exporting', because
2731+ we're making the function available for other modules. This will work:
27312732
27322733``` {notrust,ignore}
27332734$ cargo run
@@ -3291,8 +3292,7 @@ use super::times_four;
32913292
32923293Because we've made a nested module, we can import functions from the parent
32933294module by using ` super ` . Sub-modules are allowed to 'see' private functions in
3294- the parent. We sometimes call this usage of ` use ` a 're-export,' because we're
3295- exporting the name again, somewhere else.
3295+ the parent.
32963296
32973297We've now covered the basics of testing. Rust's tools are primitive, but they
32983298work well in the simple cases. There are some Rustaceans working on building
0 commit comments