gpt4 book ai didi

generics - 专精未稳定前如何专精稳定 channel ?

转载 作者:行者123 更新时间:2023-11-29 07:56:40 24 4
gpt4 key购买 nike

如何使用稳定的 Rust 实现以下(伪 Rust)?

pub fn read<T: Read>(stream: T) {
let stream = if T implements BufRead {
stream
} else {
BufReader::new(stream)
};

// Work with `stream`
}

我知道 impl specialization ,但是我想用稳定的 Rust 实现同样的事情。

最佳答案

就纯 Rust 而言,困难在于:

  • 稳定没有特化
  • Rust 没有向下转型

也就是说,还有其他选择,例如 query_interfaces提倡有原则的向下转型的 crate 。

本质上,您想让调用者告诉您是否为相关流实现了 BufRead。可以创建 query_interfaces 或专用解决方案来传送“可选”v 指针。

但是,我只需要BufReadstream 实现。如果需要,调用者始终可以用 BufRead::new 包装他们的 stream

关于generics - 专精未稳定前如何专精稳定 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920919/

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