Rust 学习笔记:关于泛型的练习题
Rust 学习笔记:关于泛型的练习题
参考视频:
- https://www.bilibili.com/video/BV1JJCVYSEg6
问题 1
答:3。
下面代码能否通过编译?若能,输出是?
fn print_slice<T>(v: &[T]) {
for x in v {
println!("{}", x);
}
}
fn main() {
print_slice(&[1, 2, 3, 4]);
}
答:不能通过编译。T 必须约束为实现了 Display trait 才能 print。
下面代码能否通过编译?若能,输出是?
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());
}
答:不能通过编译。因为泛型不可以和具体类型使用同名函数。