Rust中的泛型Generics

泛型(Generics)是用于高效处理重复概念的工具,是具体类型或其他属性的抽象替代。

在Rust中,泛型是一种让函数、结构体、枚举、Trait等支持多种类型二不重复代码的机制;(类似于C++中的模板)Rust的泛型在编译期是单态化(monomorphization)的,即在编译时将泛型替换为具体的类型,不会带来运行期开销。

函数中的泛型

泛型函数是指,在函数签名中指定参数和返回值的类型的地方,改用泛型表示。

以查找切片中最大值为例(为保证元素可比较,需要约束为PartialOrd):

fn largest<T: std::cmp::PartialOrd>(list: &[T]) -> &T {
   
   
    let mut largest = &list[0];

    for item in list {
   
   
        if item > largest {
   
   
            largest = item;
        }
    }

    largest
}

const泛型

数组类型在 Rust 中写作 [T; N]

  • T 是元素类型(可以是泛型参数);
  • N 是编译期常量长度(const)。

同一类型不同长度的数组也是不同的数组类型。可以使用数组切片(引用)和泛型来解决处理任何类型数组的问题。

定义一个可以接受任意类型、任意长度的数组的函数:

fn print_array<T: std::fmt::Debug
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值