Crates.io | ord_by_key |
lib.rs | ord_by_key |
version | 0.1.3 |
source | src |
created_at | 2020-11-16 08:28:28.283846 |
updated_at | 2020-11-17 08:54:49.747407 |
description | Provides a convenient macro for implementing Ord trait with logic specified in an inline expression |
homepage | https://github.com/pinespear/rust_ord_by_key |
repository | https://github.com/pinespear/rust_ord_by_key |
max_upload_size | |
id | 312822 |
size | 29,601 |
Provides a convenient macro for implementing Ord trait with logic specified in an inline expression
use core::cmp::Reverse;
// `Person` will be ordered by `last_name`, then by
// `first_name`, then by `age` in reverse
#[ord_eq_by_key_selector(|p|
&p.last_name,
&p.first_name,
Reverse(p.age),)]
pub struct Person {
pub first_name: String,
pub last_name: String,
pub age: usize,
}
// Container for `&str` which will be ordered by underlying
// string length
#[ord_eq_by_key_selector(|(s)| s.len())]
pub struct StrByLen<'a>(&'a str);
assert!(StrByLen("Alex") > StrByLen("Bob"));
no_std
supportord_by_key
should be compatible with no_std
, but it was not tested.
Distributed under the terms of both the MIT license and the Apache License (Version 2.0)