T { text.parse::() } 这个想法是调用者会做类似的事情 test::("2313"); -6ren">
gpt4 book ai didi

generics - 解析数字的通用函数因 "FromStr is not implemented"而失败

转载 作者:行者123 更新时间:2023-11-29 08:21:49 24 4
gpt4 key购买 nike

我的 Rust 代码中有这个通用函数:

fn test<T>(text: &str) -> T {
text.parse::<T>()
}

这个想法是调用者会做类似的事情

test::<u64>("2313");

但编译失败并显示此消息

error: the trait `core::str::FromStr` is not implemented for the type `T` [E0277]

我昨天才开始学习 Rust,所以这可能是一个我没能找到答案的非常基础的问题。

最佳答案

与错误消息状态一样,T 需要实现 core::str::FromStr 才能适用于 parse 函数. parse 的类型签名是:

fn parse<F>(&self) -> Result<F, F::Err> where F: FromStr

这将您可以使用的 F(或者,在您的情况下为 T)的类型限制为那些实现 FromStr 的类型。您的另一个问题是 test 返回的类型;它应该与 parse 相同 - Result

当您解决这些问题时,您的函数将起作用:

use std::str::FromStr;

fn test<T: FromStr>(text: &str) -> Result<T, T::Err> {
text.parse::<T>()
}

fn main() {
println!("{:?}", test::<u64>("2313"));
}

Ok(2313)

关于generics - 解析数字的通用函数因 "FromStr is not implemented"而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41567761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com