You've already forked comprehensive-rust
							
							
				mirror of
				https://github.com/google/comprehensive-rust.git
				synced 2025-10-31 08:37:45 +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:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						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. | ||||
| * 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> | ||||
|   | ||||
| @@ -35,6 +35,8 @@ fn main() { | ||||
|     * `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`;. | ||||
| * `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> | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| Trait objects allow for values of different types, for instance in a collection: | ||||
|  | ||||
| ```rust | ||||
| ```rust,editable | ||||
| trait Pet { | ||||
|     fn name(&self) -> String; | ||||
| } | ||||
| @@ -27,8 +27,8 @@ impl Pet for Cat { | ||||
|  | ||||
| fn main() { | ||||
|     let pets: Vec<Box<dyn Pet>> = vec![ | ||||
|         Box::new(Dog { name: String::from("Fido") }), | ||||
|         Box::new(Cat), | ||||
|         Box::new(Dog { name: String::from("Fido") }), | ||||
|     ]; | ||||
|     for pet in pets { | ||||
|         println!("Hello {}!", pet.name()); | ||||
| @@ -80,4 +80,4 @@ Memory layout after allocating `pets`: | ||||
|          println!("{}", std::mem::size_of::<Box<dyn Pet>>()); | ||||
|      ``` | ||||
|  | ||||
| </details> | ||||
| </details> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user