当前位置: 首页 > news >正文

Rust 语言中的泛型

在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中编写灵活且可重用代码的重要工具之一,它们使得代码更加通用和可维护。

相关文章:

  • 数学建模-敏感度分析(美赛)
  • 学习笔记。。。
  • 【自然语言处理】BitNet b1.58:1bit LLM时代
  • 如何在小程序中绑定身份证
  • 【深圳五兴科技】Java后端面经
  • Spring MVC 全局异常处理器
  • Ajax (1)
  • 支持国密的 Web 服务器
  • 【深度学习笔记】计算机视觉——FCN(全卷积网络
  • 力扣题库第7题:接雨水
  • 01_Maven
  • uniapp小程序获取位置权限(不允许拒绝)
  • 计算机网络 八股
  • 代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集
  • 【论文笔记】Language Models are Few-Shot Learners
  • 分库分表浅析原理
  • mysql和redis的区别
  • Python爬虫之爬取并下载哔哩哔哩视频
  • 剪枝例题一道
  • 10 | MySQL为什么有时候会选错索引?
  • 美国与胡塞武装达成停火协议,美伊相向而行?
  • 赵乐际:深入学习贯彻习近平生态文明思想,推动森林法全面有效贯彻实施
  • 云南禄丰尾矿坍塌事故搜救正在进行,被掩埋的四辆工程车已找到
  • 人民日报头版:让青春之花绽放在祖国和人民最需要的地方
  • “特朗普效应”下澳大利亚执政工党赢得大选,年轻选民担忧房价
  • 澳大利亚联邦选举投票正式开始