Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何将RangeInclusive转换为Range?_Rust_Range - Fatal编程技术网

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,而不是在不同类型的范围之间进行转换