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

【06】泛型

文章目录

  • 泛型
    • 函数中的泛型
    • 结构体中的泛型
      • 结构体中的方法
    • 枚举中的泛型

泛型

RUST通过在编译时对泛型代码的单态化(monomorphization)来保证运行效率。即,在编译时对泛型填充具体数据类型转换为特定代码进行编译。
由于RUST编译试图穷举所有类型,所以代码需要支持所有类型才可以编译。或者限制为指定几个类型。<T>中的T指定任一数据类型。

函数中的泛型

fn fun1<T>(list: &[T]) -> &T {}

结构体中的泛型

struct Point<T> {
	x: T,
	y: T,
}

struct Point<T, U> {
	x: T,
	y: U,
}

结构体中的方法

struct Point<T> {
	x: T,
	y: T,
}

// impl<T> 里面指定的泛型T
impl<T> Point<T> {
	fn x(&self) -> &T {
		&self.x
	}
}

可以为实例实现方法,也就是单个数据类型

impl Point<f32>{
	fn distance_from_origin(&self) -> f32 {
		(self.x.powi(2) + self.y.powi(2)).sqrt()
	}
}

impl<>中定义的方法也使用与impl<>不同的数据类型。

struct Point<X1, Y1> {
	x: X1,
	y: Y1,
}

impl<X1, Y1> Point<X1, Y1> {
fn mixup<X2, Y2>(self, other: Point<X2, Y2>) -> Point<X1, Y2> {
		Point {
			x: self.x,
			y: other.y,
		}
	}
}

枚举中的泛型

// 用于处理空的Option
enum Option<T>{
	Some(T),
	None,
}
// 用于处理错误的Result
enum Result<T,E>{
	Ok(T),
	Err(E),
}

相关文章:

  • OpenBLAS 在哪些深度学习框架中被使用
  • 【WPSOffice】汇总
  • 11.C语言 malloc() calloc() realloc()分配内存
  • 《全球网络安全政策法律发展研究报告 (2024) 》
  • 归并排序(C# C++)
  • 【分布式文件存储系统Minio】2024.12保姆级教程
  • LinkedList
  • Cherno C++ P55 宏
  • 什么是MVC?什么是SpringMVC?什么是三层架构?
  • 使用 Shiro 和 JPA 结合 MySQL 实现一个简易权限管理系统
  • scratch发射火箭 2024年12月scratch三级真题 中国电子学会 图形化编程 scratch三级真题和答案解析
  • DeepSeek 的开源优势:为什么选择它而不是其他闭源模型?
  • 人工智能 - 大脑神经网络与机器神经网络的区别
  • GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
  • 10G EPON光模块
  • 深入解析 vLLM:高性能 LLM 服务框架的架构之美(一)原理与解析
  • CPP集群聊天服务器开发实践(五):nginx负载均衡配置
  • Field ‘id‘ doesn‘t have a default value
  • Redis 事物
  • React 第二十六节 <Profiler></Profiler> 的用途使用方法
  • 外交部:对伊朗拉贾伊港口爆炸事件遇难者表示深切哀悼
  • 朝鲜证实出兵俄罗斯协助收复库尔斯克
  • 人民时评:投资于人,促高质量充分就业
  • 核电开闸!国常会核准10台新机组,拉动超2000亿投资,新项目花落谁家?
  • 他比李白接地气,比杜甫乐观,比白居易刚毅
  • 女儿被偷拍后,一个父亲的战斗