当前位置: 首页> 教育> 大学 > 厦门网页设计培训班_互联网公司的最新排名_惠州seo排名收费_怎么搜索网站

厦门网页设计培训班_互联网公司的最新排名_惠州seo排名收费_怎么搜索网站

时间:2025/7/10 1:11:10来源:https://blog.csdn.net/weixin_43219667/article/details/143974769 浏览次数:0次
厦门网页设计培训班_互联网公司的最新排名_惠州seo排名收费_怎么搜索网站

文件ext.rs源码如下

//! 标准库类型的扩展特性/// 数组的扩展特性(Extension trait for arrays)
pub trait ArrayExt<T, const N: usize> {/// 稳定替换`each_ref`////// <https://doc.rust-lang.org/std/primitive.array.html#method.each_ref>fn each_ref_ext(&self) -> [&T; N];/// 稳定替换`each_mut`////// <https://doc.rust-lang.org/std/primitive.array.html#method.each_mut>fn each_mut_ext(&mut self) -> [&mut T; N];/// 稳定替代`try_map`////// <https://doc.rust-lang.org/std/primitive.array.html#method.try_map>fn try_map_ext<F, U, E>(self, f: F) -> Result<[U; N], E>whereF: FnMut(T) -> Result<U, E>;/// 稳定替换`zip`////// <https://doc.rust-lang.org/std/primitive.array.html#method.zip>fn zip_ext<U>(self, rhs: [U; N]) -> [(T, U); N];
}impl<T> ArrayExt<T, 2> for [T; 2] {fn each_ref_ext(&self) -> [&T; 2] {let [a, b] = self;[a, b]}fn each_mut_ext(&mut self) -> [&mut T; 2] {let [a, b] = self;[a, b]}fn try_map_ext<F, U, E>(self, f: F) -> Result<[U; 2], E>whereF: FnMut(T) -> Result<U, E>,{let [a, b] = self.map(f);Ok([a?, b?])}fn zip_ext<U>(self, rhs: [U; 2]) -> [(T, U); 2] {let [a, b] = self;let [q, r] = rhs;[(a, q), (b, r)]}
}impl<T> ArrayExt<T, 3> for [T; 3] {fn each_ref_ext(&self) -> [&T; 3] {let [a, b, c] = self;[a, b, c]}fn each_mut_ext(&mut self) -> [&mut T; 3] {let [a, b, c] = self;[a, b, c]}fn try_map_ext<F, U, E>(self, f: F) -> Result<[U; 3], E>whereF: FnMut(T) -> Result<U, E>,{let [a, b, c] = self.map(f);Ok([a?, b?, c?])}fn zip_ext<U>(self, rhs: [U; 3]) -> [(T, U); 3] {let [a, b, c] = self;let [q, r, s] = rhs;[(a, q), (b, r), (c, s)]}
}impl<T> ArrayExt<T, 4> for [T; 4] {fn each_ref_ext(&self) -> [&T; 4] {let [a, b, c, d] = self;[a, b, c, d]}fn each_mut_ext(&mut self) -> [&mut T; 4] {let [a, b, c, d] = self;[a, b, c, d]}fn try_map_ext<F, U, E>(self, f: F) -> Result<[U; 4], E>whereF: FnMut(T) -> Result<U, E>,{let [a, b, c, d] = self.map(f);Ok([a?, b?, c?, d?])}fn zip_ext<U>(self, rhs: [U; 4]) -> [(T, U); 4] {let [a, b, c, d] = self;let [q, r, s, t] = rhs;[(a, q), (b, r), (c, s), (d, t)]}
}/// 数组的扩展特性
pub trait SliceExt<T> {/// Stable replacement for `array_chunks`////// <https://doc.rust-lang.org/std/primitive.slice.html#method.array_chunks>fn array_chunks_ext<const N: usize>(&self) -> ArrayChunks<T, N>;/// Stable replacement for `array_windows`////// <https://doc.rust-lang.org/std/primitive.slice.html#method.array_windows>fn array_windows_ext<const N: usize>(&self) -> ArrayWindows<T, N>;
}impl<T> SliceExt<T> for &[T] {fn array_chunks_ext<const N: usize>(&self) -> ArrayChunks<T, N> {ArrayChunks {slice: self,index: 0,}}fn array_windows_ext<const N: usize>(&self) -> ArrayWindows<T, N> {ArrayWindows {slice: self,index: 0,}}
}/// Returned by [`SliceExt::array_chunks_ext`]
pub struct ArrayChunks<'a, T: 'a, const N: usize> {slice: &'a [T],index: usize,
}impl<'a, T, const N: usize> Iterator for ArrayChunks<'a, T, N> {type Item = &'a [T; N];fn next(&mut self) -> Option<Self::Item> {if self.index + N > self.slice.len() {return None;}let next = &self.slice[self.index..self.index + N];self.index += N;let next = next.try_into().unwrap();Some(next)}
}/// Returned by [`SliceExt::array_windows_ext`]
pub struct ArrayWindows<'a, T: 'a, const N: usize> {slice: &'a [T],index: usize,
}impl<'a, T, const N: usize> Iterator for ArrayWindows<'a, T, N> {type Item = &'a [T; N];fn next(&mut self) -> Option<Self::Item> {if self.index + N > self.slice.len() {return None;}let next = &self.slice[self.index..self.index + N];self.index += 1;let next = next.try_into().unwrap();Some(next)}
}
关键字:厦门网页设计培训班_互联网公司的最新排名_惠州seo排名收费_怎么搜索网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: