gpt4 book ai didi

rust - AsRef 如何与 str 一起工作?

转载 作者:行者123 更新时间:2023-11-29 07:54:23 25 4
gpt4 key购买 nike

我想写一个可以直接接受字符串切片的特征:

use std::path::Path;

trait Trait1 {}

impl Trait1 for str {}
// impl<'a> Trait1 for &'a str {}

fn run<T: Trait1>(_: T) {}
fn run1<T: AsRef<Path>>(_: T) {}

fn main() {
// E0277: the trait bound `&str: Trait1` is not satisfied
// run::<&str>("sf");
run1::<&str>("sf");
}

注意

run::<&str>("sf");

除非 Trait1 也为 &str 实现,否则不会编译。然而,AsRef 仍然有效 being implemented仅适用于 str。 AsRef 有什么特别之处吗?

最佳答案

如果您检查 documentation for AsRef ,您会看到它列出了以下实现:

impl<'a, T, U> AsRef<U> for &'a T where T: AsRef<U> + ?Sized, U: ?Sized

str实现 AsRef<Path>意味着 &str 实现了AsRef<Path> .

关于rust - AsRef 如何与 str 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43493129/

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