diff --git a/hello-world.md b/hello-world.md index fc47ce2..3581b55 100644 --- a/hello-world.md +++ b/hello-world.md @@ -114,12 +114,12 @@ Lets change our example a little bit: ```rust fn main() { - let world = "world"; - println!("Hello {}!", world); + let recipient = "world"; + println!("Hello {}!", recipient); } ``` -`let` is used to introduce a variable, world is the variable name and it is a +`let` is used to introduce a variable, recipient is the variable name and it is a string (technically the type is `&'static str`, but more on that later). We don't need to specify the type, it will be inferred for us. @@ -129,29 +129,30 @@ a string if it is not one already[1](#1) (like `operator<<()` in C++) You can easily play around with this sort of thing - try multiple strings and using numbers (integer and float literals will work). -If you like, you can explicitly give the type of `world`: +If you like, you can explicitly give the type of `recipient`: ```rust -let world: &'static str = "world"; +let recipient: &'static str = "world"; ``` -In C++ we write `T x` to declare a variable `x` with type `T`. In Rust we write +In C++ we write `T x` to declare a variable named `x` of type `T`. In Rust we write `x: T`, whether in `let` statements or function signatures, etc. Mostly we omit explicit types in `let` statements, but they are required for function arguments. Lets add another function to see it work: ```rust -fn foo(_x: &'static str) -> &'static str { +fn getRecipient(_x: &'static str) -> &'static str { "world" } fn main() { - println!("Hello {}!", foo("bar")); + println!("Hello {}!", getRecipient("foo")); } ``` -The function `foo` has a single argument `_x` which is a string literal (we pass -it "bar" from `main`)[2](#2). +The function `getRecipient` has a single argument `_x` which is a string literal (we pass +it "foo" from `main`). (Rust will warn us if we're not using an argument within a function, so +we prefix `_` to the parameter name to suppress that warning.[2](#2)) The return type for a function is given after `->`. If the function doesn't return anything (a void function in C++), we don't need to give a return type at @@ -160,7 +161,7 @@ all (as in `main`). If you want to be super-explicit, you can write `-> ()`, You don't need the `return` keyword in Rust, if the last expression in a function body (or any other block, we'll see more of this later) is not finished -with a semicolon, then it is the return value. So `foo` will return +with a semicolon, then it is the return value. So, in the above example, `getRecipient` will return "world". The `return` keyword still exists so we can do early returns. You can replace `"world"` with `return "world";` and it will have the same effect. @@ -189,7 +190,5 @@ with printf, there are many other options. ##### 2 -We don't actually use that argument in `foo`. Usually, -Rust will warn us about this. By prefixing the argument name with `_` we avoid -these warnings. In fact, we don't need to name the argument at all, we could +In fact, we don't need to name the parameter at all, we could just use `_`.