当前位置: 首页 > 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),
}
http://www.dtcms.com/a/21929.html

相关文章:

  • 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> 的用途使用方法
  • 【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
  • 2025年 Java 面试八股文
  • 鸿蒙Harmony-UIAbility内状态-LocalStorage详细介绍
  • 【数据结构】 栈和队列
  • Unity DeepSeek API 聊天接入教程(0基础教学)
  • 聊一聊vue如何实现角色权限的控制的
  • JavaBean
  • 【Elasticsearch入门到落地】8、RestClient操作索引库-基础介绍及导入demo
  • 【OpenCV】入门教学
  • Spring 和 Spring MVC 的关系是什么?