Comments (7)
See the closed #67 -- the main challenge is that Hash
needs to be consistent with Eq
.
from indexmap.
Meh, I should have searched better. Also, I was too naïf so I have now retitled this.
from indexmap.
I'm going to close this as there is no use case proposed for hashing the indexmap nor an algorithm that it should use. If I read the original report correctly, the map is embedded into a bigger type and it's entirely possible for you to define a domain specific hash and equality for that specific case.
from indexmap.
@bluss glad that you are back! As an afterthought related to this, I was wondering if PartialEq
should behave like the BTreeSet one instead, by taking item-order into account too?
from indexmap.
You can also use Iterator::eq
to compare in order.
from indexmap.
Sure, but I am talking about the commonly-used comparison, which is a potential hazard for anybody actually relying on insertion order for semantics.
As a quite common usecase for an example, let's take "de-duplicated ordered policy rules":
extern crate indexmap; // 1.0.2
// Policy: subject - verb - object
type Policies = indexmap::IndexSet<(&'static str, &'static str, &'static str)>;
fn main() {
let mut rules1 = Policies::new();
rules1.insert(("user", "allow", "ssh"));
rules1.insert(("user", "deny", "ssh"));
let mut rules2 = Policies::new();
rules2.insert(("user", "deny", "ssh"));
rules2.insert(("user", "allow", "ssh"));
// This does not panic right now.
assert_eq!(rules1, rules2)
}
from indexmap.
@lucab What you're saying makes sense, but a guiding tenet here has been to be a drop-in HashMap replacement, and this would break with that. I think this means that by default, indexmap will not implement your suggestion. You could use indexmap to implement it for your own policies collection, and we could provide an ordered comparison method.
from indexmap.
Related Issues (20)
- Implement (behind a feature branch) the Merge Crate HOT 4
- IndexMap doesn't implement `Hash` HOT 1
- Compilation bug HOT 1
- Organization / repo home HOT 12
- Doc link on crates.io is dead. HOT 3
- Kaspersky detected the indexmap build-script exe as malware (false positive) HOT 1
- MutableKeys for IndexSet HOT 2
- implement get_many_mut HOT 1
- serde_json::to_string serializes (key, value) HOT 3
- Request: add example to README
- Thanks :)
- Insert into Indexmap randomly fails HOT 9
- Expanding mut key API HOT 2
- Feature request: join two or more IndexMap HOT 2
- Request: Random access of key/value pairs HOT 2
- range end index 2 out of range for slice of length 1 HOT 20
- Feature request: `Into<std::collections::HashMap>` HOT 1
- `Clone` for into-iterators HOT 4
- Question: Double-Ended IndexMap HOT 4
- `replace_text` fails every time with `Could not parse ToUnicodeCMap: Error!` HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from indexmap.