mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-26 00:00:03 +03:00
generics1 rewrite and solution
This commit is contained in:
parent
b1daea1fe8
commit
46121b71cf
|
@ -1,7 +1,18 @@
|
||||||
// This shopping list program isn't compiling! Use your knowledge of generics to
|
// `Vec<T>` is generic over the type `T`. In most cases, the compiler is able to
|
||||||
// fix it.
|
// infer `T`, for example after pushing a value with a concrete type to the vector.
|
||||||
|
// But in this exercise, the compiler needs some help through a type annotation.
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut shopping_list: Vec<?> = Vec::new();
|
// TODO: Fix the compiler error by annotating the type of the vector
|
||||||
shopping_list.push("milk");
|
// `Vec<T>`. Choose `T` as some integer type that can be created from
|
||||||
|
// `u8` and `i8`.
|
||||||
|
let mut numbers = Vec::new();
|
||||||
|
|
||||||
|
// Don't change the lines below.
|
||||||
|
let n1: u8 = 42;
|
||||||
|
numbers.push(n1.into());
|
||||||
|
let n2: i8 = -1;
|
||||||
|
numbers.push(n2.into());
|
||||||
|
|
||||||
|
println!("{numbers:?}");
|
||||||
}
|
}
|
||||||
|
|
|
@ -734,8 +734,13 @@ test = false
|
||||||
hint = """
|
hint = """
|
||||||
Vectors in Rust make use of generics to create dynamically sized arrays of any
|
Vectors in Rust make use of generics to create dynamically sized arrays of any
|
||||||
type.
|
type.
|
||||||
|
If the vector `numbers` has the type `Vec<T>`, then we can only push values of
|
||||||
|
type `T` to it. By using `into()` before pushing, we ask the compiler to convert
|
||||||
|
`n1` and `n2` to `T`. But the compiler doesn't know what `T` is yet and needs a
|
||||||
|
type annotation.
|
||||||
|
|
||||||
You need to tell the compiler what type we are pushing onto this vector."""
|
`u8` and `i8` can both be converted to `i16`, `i32` and `i64`. Choose one for
|
||||||
|
the generic of the vector."""
|
||||||
|
|
||||||
[[exercises]]
|
[[exercises]]
|
||||||
name = "generics2"
|
name = "generics2"
|
||||||
|
|
|
@ -1 +1,17 @@
|
||||||
// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
|
// `Vec<T>` is generic over the type `T`. In most cases, the compiler is able to
|
||||||
|
// infer `T`, for example after pushing a value with a concrete type to the vector.
|
||||||
|
// But in this exercise, the compiler needs some help through a type annotation.
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// `u8` and `i8` can both be converted to `i16`.
|
||||||
|
let mut numbers: Vec<i16> = Vec::new();
|
||||||
|
// ^^^^^^^^^^ added
|
||||||
|
|
||||||
|
// Don't change the lines below.
|
||||||
|
let n1: u8 = 42;
|
||||||
|
numbers.push(n1.into());
|
||||||
|
let n2: i8 = -1;
|
||||||
|
numbers.push(n2.into());
|
||||||
|
|
||||||
|
println!("{numbers:?}");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue