#ord #github #renamed #ordered #wish #yourself #f64

已删除 almost_ord

此crate已被重命名为ord_subset。'almost_ord' crate将不再更新。如果您想为自己使用此名称,请通过GitHub联系我。

使用旧Rust 2015

0.2.2 2016年1月27日
0.2.1 2015年8月23日
0.2.0 2015年8月22日
0.1.0 2015年8月4日

#13 in #wish

MIT/Apache

21KB
208 代码行

此crate已被重命名为ord_subset。请使用,https://github.com/Emerentius/ord_subset

almost_ord

用于处理特定类型(如 f32f64)的Ord子集的crate。

许可协议

根据Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 或MIT许可 http://opensource.org/licenses/MIT 授予许可,具体选择由您决定。此文件不得复制、修改或分发,除非根据这些条款。


lib.rs:

曾想对一个浮点数的迭代器调用 .max() 吗?现在您可以这样做了!嗯,几乎可以:.partial_max()

此crate用于类似浮点原始类型 f32f64 的类型:除了这些特定值之外,这些类型是完全有序的。

我将这些类型称为近似有序。可以使用此crate定义的 AlmostOrd trait对这些类型进行标记。可以将这些类型放入 OrdVar 结构体中。将值包裹在这个结构体中会告诉其他代码内容是有序的,从而满足泛型 Ord 特性约束。

为了方便,已扩展迭代器和切片,以便近似有序类型可以访问与 .max().sort() 相等的方法。在近似有序类型的无序子集中处理值时,会采用一致的方式(忽略或放在末尾)。

稳定性

这个包仅限于扩展 std 中的稳定函数,以便能够基于稳定版本进行构建。因此,对 min_by()max_by()min_max() 的扩展尚未包含(如果需要,可以从中复制出来。它们只是被注释掉了)。

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
almost_ord = "~0.1.0"
extern crate almost_ord;
use almost_ord::{AlmostOrdIterExt, AlmostOrdSliceExt};

fn main() {
	// Slices. Works on vector, too.
	let mut s = [5.0, std::f64::NAN, 3.0, 2.0];
	s.partial_sort();
	assert_eq!(&s[0..3], &[2.0, 3.0, 5.0]);
	assert_eq!(s.partial_binary_search(&5.0), Ok(2));

	// iterators
	assert_eq!( s.iter().partial_max(), Some(&5.0) );
	assert_eq!( s.iter().partial_min(), Some(&2.0) );
}

许可协议

根据Apache License 2.0 http://www.apache.org/licenses/LICENSE-2.0 或MIT许可 http://opensource.org/licenses/MIT 授予许可,具体选择由您决定。此文件不得复制、修改或分发,除非根据这些条款。

无运行时依赖