#hash-map #no-std #order #equivalent

no-std equivalent-flipped

Similar to equivalent crate, but flips K and Q

3 releases (1 stable)

Uses old Rust 2015

1.0.0 Dec 18, 2024
0.1.1 Dec 11, 2024
0.1.0 Dec 11, 2024

#1257 in Data structures

Download history 491/week @ 2024-12-06 758/week @ 2024-12-13 2316/week @ 2024-12-20 1114/week @ 2024-12-27 554/week @ 2025-01-03

4,947 downloads per month
Used in 23 crates (3 directly)

MIT/Apache

13KB
58 lines

Equivalent-Flipped

github Build

docs.rs crates.io crates.io license

English | 简体中文

Inspired by indexmap-rs/equivalent, providing Equivalent and Comparable, which are Rust traits for key comparison in maps, but flips K and Q.

These may be used in the implementation of maps where the lookup type Q may be different than the stored key type K.

  • K: Equivalent<Q>, Q: ?Sized checks for equality, similar to the HashMap<K, V> constraint K: Borrow<Q>, Q: Eq.
  • K: Comparable<Q>, Q: ?Sized checks the ordering, similar to the BTreeMap<K, V> constraint K: Borrow<Q>, Q: Ord.

These traits are not used by the maps in the standard library, but they may add more flexibility in third-party map implementations, especially in situations where a strict K: Borrow<Q> relationship is not available.

Installation

[dependencies]
equivalent-flipped = "0.1"

Pedigree

This code is inspired and modified based on indexmap-rs/equivalent, and reference to @cuviper attempts on https://github.com/indexmap-rs/indexmap/issues/253#issuecomment-1459160166

License

equivalent-flipped is under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE, LICENSE-MIT for details.

Copyright (c) 2024 Al Liu.

No runtime deps