#[derive(AddressOrd)]Expand description
Derives PartialOrd and Ord based on memory addresses.
By deriving AddressOrd, the PartialOrd and Ord traits will automatically be
implemented for the given type. The implementations will use a given instance’s address
in memory in when performing comparison.
This form of comparison can be useful in certain cases, like implementing ordering based on position in a slice, but can also produce unexpected results depending on how the compiler chooses to place data in memory.
Since implementing PartialOrd on a type requires that the type also implements PartialEq
and implementations of Hash and Eq must agree, it is recommended to derive both
AddressOrd and AddressEq together.
use address_cmp::{AddressEq, AddressOrd};
#[derive(AddressEq, AddressOrd, Debug)]
struct Person {
pub age: u8,
pub name: String,
}
let p1 = Person { age: 22, name: "Mercutio".into() };
let p2 = Person { age: 22, name: "Mercutio".into() };
let p3 = Person { age: 21, name: "Benvolio".into() };
let friends = vec![p1, p2, p3];
assert!(friends[0] < friends[1]);
assert!(friends[1] < friends[2]);
assert_eq!(friends[0], friends[0]);