Rust 如何将RangeInclusive转换为Range?
所以很明显我可以这样做:Rust 如何将RangeInclusive转换为Range?,rust,range,Rust,Range,所以很明显我可以这样做: impl From<RangeInclusive<u32>> for Range<u32>{ fn from(r: RangeInclusive<u32>) -> Self { (*r.start()..(r.end()+1)) } } impl From for Range{ fn from(r:range inclusive)->Self{ (*r.开始()…(r.结束()+1
impl From<RangeInclusive<u32>> for Range<u32>{
fn from(r: RangeInclusive<u32>) -> Self {
(*r.start()..(r.end()+1))
}
}
impl From for Range{
fn from(r:range inclusive)->Self{
(*r.开始()…(r.结束()+1))
}
}
然而,我想知道是否已经有了一个标准的功能(我在文档中找不到任何东西/在快速的谷歌搜索之后)。
如果不是的话,我们将如何为每一种num类型实现它,这样的实现会受到欢迎吗?或者这是尚未实现的原因吗?不是每个
RangeInclusive
都可以转换为范围,这是RangeInclusive
存在的主要原因。例如,0u32..=u32::MAX
无法转换为Range
,因为u32::MAX+1
超出了u32
的范围
可以想象,Range
可以实现TryFrom
,但这种转换很少是必要的。与在不同类型的范围之间转换不同,您通常应该使用编写通用API。不是每个RangeInclusive
都可以转换为范围,这是RangeInclusive
存在的主要原因。例如,0u32..=u32::MAX
无法转换为Range
,因为u32::MAX+1
超出了u32
的范围
可以想象,Range
可以实现TryFrom
,但这种转换很少是必要的。您通常应该使用编写通用API,而不是在不同类型的范围之间进行转换