equivalent-flipped

Crates.ioequivalent-flipped
lib.rsequivalent-flipped
version1.0.0
sourcesrc
created_at2024-12-11 13:16:02.727373+00
updated_at2024-12-18 09:28:32.884104+00
descriptionSimilar to `equivalent` crate, but flips `K` and `Q`.
homepagehttps://github.com/al8n/equivalent-flipped
repositoryhttps://github.com/al8n/equivalent-flipped
max_upload_size
id1480077
size28,371
Al Liu (al8n)

documentation

https://docs.rs/equivalent-flipped

README

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.

Commit count: 0

cargo fmt