Rust 学习笔记:关于泛型的练习题
- [Rust 学习笔记:关于泛型的练习题](#Rust 学习笔记:关于泛型的练习题)
-
- [问题 1](#问题 1)
- 下面代码能否通过编译?若能,输出是?
- 下面代码能否通过编译?若能,输出是?
Rust 学习笔记:关于泛型的练习题
参考视频:
问题 1

答:3。
下面代码能否通过编译?若能,输出是?
rust
fn print_slice<T>(v: &[T]) {
for x in v {
println!("{}", x);
}
}
fn main() {
print_slice(&[1, 2, 3, 4]);
}
答:不能通过编译。T 必须约束为实现了 Display trait 才能 print。

下面代码能否通过编译?若能,输出是?
rust
struct Point<T> {
x: T,
y: T,
}
impl Point<i32> {
fn f(&self) -> &i32 {
&self.y
}
}
impl<T> Point<T> {
fn f(&self) -> &T {
&self.x
}
}
fn main() {
let p: Point<i32> = Point { x: 5, y: 10 };
println!("{}", p.f());
}
答:不能通过编译。因为泛型不可以和具体类型使用同名函数。
