Appearance
泛型1: exercises/generics/generics1.rs
题目
rust
// generics1.rs
//
// This shopping list program isn't compiling! Use your knowledge of generics to
// fix it.
//
// Execute `rustlings hint generics1` or use the `hint` watch subcommand for a
// hint.
// I AM NOT DONE
fn main() {
let mut shopping_list: Vec<?> = Vec::new();
shopping_list.push("milk");
}
此购物清单程序未编译通过,请使用您的泛型知识来修复它。
题目解析
Rust中的Vec类型可以使用泛型来创建任何类型的动态大小类型数组。但是我们需要告诉编译器放入Vec内的数据类型。
第一种,我们使用_
来替换类型,因为下面有push()
操作,这样可以让Rust自动推导类型:
rust
fn main() {
let mut shopping_list: Vec<?> = Vec::new();
let mut shopping_list: Vec<_> = Vec::new();
shopping_list.push("milk");
}
第二种,我们根据后面的push()
直接写明类型:
rust
fn main() {
let mut shopping_list: Vec<?> = Vec::new();
let mut shopping_list: Vec<&str> = Vec::new();
shopping_list.push("milk");
}