Rust语言中的泛型
- 创业
- 2025-07-23 12:54:01

在Rust中,泛型(Generics)是一种允许你编写与多种不同数据类型一起工作的代码的方式。Rust主要通过两种方式来支持泛型:使用泛型函数和泛型结构体。下面是一些使用Rust泛型的示例。
一、泛型函数示例 fn add<T>(x: T, y: T) -> T { x + y } fn main() { let sum = add(5, 10); // sum 的类型是 i32 println!("{}", sum); // 输出: 15 let sum_f32 = add(5.0, 10.0); // sum_f32 的类型是 f32 println!("{}", sum_f32); // 输出: 15.0 }在这个例子中,add 函数是一个泛型函数,它可以接受任何两个相同类型 T 的参数,并返回它们的和。T 是一个类型参数,它代表一个未知的类型,这个类型在调用函数时会被确定。
二、泛型结构体示例 struct Point<T> { x: T, y: T, } fn main() { let integer_point = Point { x: 5, y: 10 }; // Point<i32> println!("Point at ({}, {})", integer_point.x, integer_point.y); let float_point = Point { x: 5.0, y: 10.5 }; // Point<f64> println!("Point at ({:.1}, {:.1})", float_point.x, float_point.y); }在这个例子中,Point 是一个泛型结构体,它接受一个类型参数 T。这意味着你可以创建一个包含整数坐标的 Point,也可以创建一个包含浮点数坐标的 Point。
三、泛型与trait约束你还可以为泛型类型添加trait约束,以确保它们满足某些特定的行为。例如,你可能想要确保泛型类型实现了加法操作:
use std::ops::Add; fn add_with_trait<T: Add<Output = T>>(x: T, y: T) -> T { x + y } fn main() { let sum = add_with_trait(5, 10); // sum 的类型是 i32 println!("{}", sum); // 输出: 15 // 尝试用不支持加法的类型调用函数会导致编译错误 // let sum_string = add_with_trait("Hello, ", "world!"); // 编译错误 }在这个例子中,add_with_trait 函数使用了 Add trait 作为泛型类型 T 的约束。这意味着 T 必须实现 Add trait,并且加法的结果类型必须与 T 相同。这确保了调用这个函数时不会意外地传入不支持加法的类型。
泛型是Rust中编写灵活且可重用代码的重要工具之一,它们使得代码更加通用和可维护。
Rust语言中的泛型由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Rust语言中的泛型”
上一篇
树莓派Py程序加入开机自启
下一篇
分库分表浅析原理