generics - 有没有一种方法可以使用通用类型别名作为Rust中函数的通用类型

标签 generics rust

我希望能够将通用类型别名作为Rust中几个函数的通用类型参数重用。

我尝试按照type alias rust docs中指定的语法创建以下类型别名:

type DebuggableFromStr<T: FromStr>
where
    <T as std::str::FromStr>::Err: std::fmt::Debug,
= T;

并希望使用它来替换以下函数中的泛型类型定义:

fn split_string_to_vec<T: FromStr>(s: String) -> Vec<T>
where
    <T as std::str::FromStr>::Err: std::fmt::Debug,
{
    s.split_whitespace()
        .map(|s| s.parse().unwrap())
        .collect::<Vec<T>>()
}

最佳答案

不会,因为Rust不会对类型别名强制执行类型范围。您的示例与此等效:

type DebuggableFromStr<T> = T;

Playground

我不相信它会被专门记录在任何地方,但是如果您尝试这样做,编译器会发出警告。

关于generics - 有没有一种方法可以使用通用类型别名作为Rust中函数的通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59586238/

相关文章:

java - 为什么编译器无法推断 Java 中内部类的泛型类型?

generics - 我可以使这个结构更通用吗?

java - 如何告诉java泛型类型是函数式接口(interface)?

java - 通用数据库方法

rust - 当值包含键和值之间的分隔符或对之间的分隔符时,如何从字符串中提取键和值?

c# - 来自泛型函数的静态方法调用

rust - 如何将向量与自身的反向版本进行比较?

rust - 在建模包含关系时了解生命周期管理

generics - 编写没有大量样板类型约束的通用浮点代码

rust - 如何使用 cargo publish 发布优化的二进制文件?