mirror of
https://github.com/google/comprehensive-rust.git
synced 2025-03-24 15:29:28 +02:00
Minor fixes (#579)
* order the Cat and Dog correctly in the vec * make example editable * patterns: capture vs. constant * clarify notes on indexing a string
This commit is contained in:
parent
4266078684
commit
6744822454
@ -9,4 +9,8 @@ You can also destructure `structs`:
|
|||||||
|
|
||||||
* Change the literal values in `foo` to match with the other patterns.
|
* Change the literal values in `foo` to match with the other patterns.
|
||||||
* Add a new field to `Foo` and make changes to the pattern as needed.
|
* Add a new field to `Foo` and make changes to the pattern as needed.
|
||||||
|
* The distinction between a capture and a constant expression can be hard to
|
||||||
|
spot. Try changing the `2` in the second arm to a variable, and see that it subtly
|
||||||
|
doesn't work. Change it to a `const` and see it working again.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -35,6 +35,8 @@ fn main() {
|
|||||||
* `String` implements `Deref<Target = str>` which transparently gives it access to `str`'s methods.
|
* `String` implements `Deref<Target = str>` which transparently gives it access to `str`'s methods.
|
||||||
* Write and compare `let s3 = s1.deref();` and `let s3 = &*s1`;.
|
* Write and compare `let s3 = s1.deref();` and `let s3 = &*s1`;.
|
||||||
* `String` is implemented as a wrapper around a vector of bytes, many of the operations you see supported on vectors are also supported on `String`, but with some extra guarantees.
|
* `String` is implemented as a wrapper around a vector of bytes, many of the operations you see supported on vectors are also supported on `String`, but with some extra guarantees.
|
||||||
* Compare the different ways to index a `String` by using `s3[i]` and `s3.chars().nth(i).unwrap()` where `i` is in-bound, out-of-bounds, and "on" the flag Unicode character.
|
* Compare the different ways to index a `String`:
|
||||||
|
* To a character by using `s3.chars().nth(i).unwrap()` where `i` is in-bound, out-of-bounds.
|
||||||
|
* To a substring by using `s3[0..4]`, where that slice is on character boundaries or not.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Trait objects allow for values of different types, for instance in a collection:
|
Trait objects allow for values of different types, for instance in a collection:
|
||||||
|
|
||||||
```rust
|
```rust,editable
|
||||||
trait Pet {
|
trait Pet {
|
||||||
fn name(&self) -> String;
|
fn name(&self) -> String;
|
||||||
}
|
}
|
||||||
@ -27,8 +27,8 @@ impl Pet for Cat {
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let pets: Vec<Box<dyn Pet>> = vec![
|
let pets: Vec<Box<dyn Pet>> = vec![
|
||||||
Box::new(Dog { name: String::from("Fido") }),
|
|
||||||
Box::new(Cat),
|
Box::new(Cat),
|
||||||
|
Box::new(Dog { name: String::from("Fido") }),
|
||||||
];
|
];
|
||||||
for pet in pets {
|
for pet in pets {
|
||||||
println!("Hello {}!", pet.name());
|
println!("Hello {}!", pet.name());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user