Chris Morgan [Tue, 25 Jan 2022 08:22:06 +0000 ]
Add a local testing script
Chris Morgan [Tue, 25 Jan 2022 08:21:15 +0000 ]
Implement From, not Into
Chris Morgan [Tue, 25 Jan 2022 08:18:34 +0000 ]
More documentation tweaks to clarify and explain
Chris Morgan [Tue, 25 Jan 2022 04:59:28 +0000 ]
Drop anymap::Any in favour of std::any::Any
Casualties: Any + Sync, CloneAny + Sync. Acceptable losses.
Chris Morgan [Tue, 25 Jan 2022 03:43:04 +0000 ]
Flatten anymap::any out of existence
Namespaces are one honking great idea, but flat is better than nested.
anymap::raw still makes sense.
Chris Morgan [Tue, 25 Jan 2022 03:27:26 +0000 ]
Tweak docs, especially around safety
No semantic changes.
Chris Morgan [Tue, 25 Jan 2022 03:12:16 +0000 ]
Make TypeIdHasher safe, bump MSRV
Wait a few years and nice things stabilise!
• u64::from_ne_bytes([u8; 8]) is stable in 1.32.0
• TryFrom<&[u8]> for [u8; 8] is stable in 1.34.0
(There are other things I’m touching today that also require a more mild
MSRV bump, but this is the most I *need* at this time.)
Chris Morgan [Tue, 25 Jan 2022 02:48:23 +0000 ]
Refactor to avoid a spurious compatibility warning
Explained in the SAFETY comment. I’m not happy about *doing* this, but
it will make *using* this crate easier, since future-compatibility lints
make noise on bin crate builds, so this was polluting other people’s
code and making life harder for users.
I have traded one evil (a spurious warning) for another (unsafe code).
Chris Morgan [Tue, 25 Jan 2022 02:06:15 +0000 ]
Unravel the parbroken define! macro
Turns out its commenting technique was completely broken—the attributes
have to be attached to an item *inside* the macro, not outside. And
judging by https://docs.rs/anymap/0.11.0/anymap/any/trait.CloneAny.html,
it was broken from the start, and I never noticed. Sigh. Now, you get a
warning that it’s not going to work like you want. Good stuff.
Well, that macro wasn’t a great idea anyway. Doing without it ends up a
little longer, and risks inconsistent editing, but is decidedly easier
to read.
Chris Morgan [Tue, 25 Jan 2022 01:57:35 +0000 ]
No more bare trait objects: use `dyn Trait` syntax
Chris Morgan [Tue, 25 Jan 2022 01:56:30 +0000 ]
Refresh Cargo.toml, README.md
Remove superfluous things, update useful things.
Chris Morgan [Tue, 25 Jan 2022 01:40:30 +0000 ]
Add the BlueOak-1.0.0 license
I prefer to use BlueOak-1.0.0 now; It wasn’t around back in 2017.
There are a number of commits in this repository not made by me, all
from before Rust 1.0.0:
•
f1710353a039c1d5e95d15bb54effd7cab8e047f (Robert Straw; trivial: matching std enum namespacing breakage)
•
de091453093fb5139de71b085411d2fad1a52275 (Robert Straw; trivial: std enum namespacing breakage)
•
2e37f0d1aebbd0c56acd0de7b46d14cd71d3e134 (Jonathan Reem; added AnyMap::contains, which had become obvious for Rust collection parity)
•
8b30c87fe6cf514544d8bc68989631daac8aeec1 (tivek; trivial: Rust syntax change in integer literal inference)
•
c9d196be5f40fb0c6e53c65fa072aea60de8c3f1 (Jonathan Reem; trivial: version bump)
•
330bc5aa1e4b1644a19b3751ee3b65c849447005 (Jonathan Reem; not creative and largely no longer present: introduced Cargo support, tweaked Makefile)
•
a9b1e31b7062e42248347805cbee662efe0eb713 (Tomas Sedovic; nigh-trivial and no longer present: Collection and Mutable trait implementations)
•
eecc4a4b758ae743486cfe4254cefd136f829391 (Jonathan Reem; trivial: Rust syntax change)
•
d51aff506409d7ffa2de275cd4e3029a88de1e2a (Jonathan Reem; trivial: rustc lint change)
•
56113c63b028e7d215f1c16cf90d9c5d902df477 (Jonathan Reem; trivial: Rust syntax change)
All but one of these are definitely trivial, obvious, and in the context
of the project and ecosystem not creative works (⅌ copyright doctrine
definition); or else no longer present. The one arguable exception is
2e37f0d1aebbd0c56acd0de7b46d14cd71d3e134 , adding AnyMap::contains, since
I hadn’t added a contains method; but its *definition* is trivial with
only one possible implementation, and subsequent to that time I did go
through and check for parity with HashMap methods, to say nothing of the
code having changed shape quite a bit since then too. Therefore I’m
content to consider it immaterial for relicensing.
Chris Morgan [Tue, 25 Jan 2022 13:12:16 +0000 ]
Revert "removed unsafe code in favor of explicit assert"
This reverts commit
479d756c992af132c6ba45248c65dc230c5986cf .
There’s nothing wrong with this patch, but I had never pulled this
commit to my local repository and had completely forgotten about it, and
today removed the unsafe code in a *different* direction that I like
better (`bytes.try_into().map(|bytes| u64::from_ne_bytes(bytes))`), so
reverting it so I can cleanly rebase is just easier for me!
Chris Morgan [Tue, 27 Nov 2018 01:47:11 +0000 ]
Merge pull request #32 from hellow554/master
removed unsafe code in favor of explicit assert
Marcel Hellwig [Tue, 13 Nov 2018 07:33:44 +0000 ]
removed unsafe code in favor of explicit assert
Chris Morgan [Mon, 2 Oct 2017 03:32:51 +0000 ]
Implement Default on Map
It was implemented on RawMap, and I’m not sure quite why it wasn’t
implemented on Map. I can’t think of any reason *not* to, though, so we
might as well.
Closes #30. Thanks to Maxwell Koo <mjkoo90@gmail.com> for the fix.
Chris Morgan [Mon, 23 Jan 2017 17:07:10 +0000 ]
Add a note about unsafety.
Chris Morgan [Fri, 20 Jan 2017 16:03:45 +0000 ]
Remove an obsolete note from the README
Chris Morgan [Fri, 20 Jan 2017 16:01:56 +0000 ]
Remove the `bench` Cargo feature as superfluous
A better pattern is to put benchmarks in the `benches` directory;
that way, `cargo test` won’t pick them up by default,
and so it won’t fail on the stable and beta channels.
Chris Morgan [Fri, 20 Jan 2017 15:58:07 +0000 ]
Add a changelog.
Chris Morgan [Fri, 20 Jan 2017 15:55:44 +0000 ]
Remove obsolete rust-ci docs uploading
We use docs.rs these days. No manual work in it, either. Yay!
Chris Morgan [Fri, 20 Jan 2017 12:43:13 +0000 ]
0.12.1
Chris Morgan [Fri, 20 Jan 2017 12:40:55 +0000 ]
Make clippy happy.
Chris Morgan [Sat, 11 Jun 2016 03:30:33 +0000 ]
Put in a bunch of #[inline] attributes on fns.
Somewhere along the path I didn’t mark some functions as `#[inline]`
which they should probably be.
Small but visible benchmark improvements, but within ε so low
confidence.
Chris Morgan [Sat, 11 Jun 2016 03:28:30 +0000 ]
Reduce the work for rustc in the benchmarks.
This *does* mean that they no longer function as tests, which was
deliberate, but rustc is just too slow with the assertions in there as
well. If I care, I can make variants of it that actually test. For now,
I’m sufficiently happy with it.
Chris Morgan [Sat, 11 Jun 2016 00:46:30 +0000 ]
Use raw pointers for downcasting, not TraitObject
This mirrors a change in mopa.
Chris Morgan [Sat, 11 Jun 2016 00:06:13 +0000 ]
Add more benchmarking
Including a rustc/llvm pathalogical case.
Chris Morgan [Fri, 10 Jun 2016 23:30:24 +0000 ]
Remove superfluous Clone bound on Entry methods.
Thanks to @Kimundi for pointing this out. I presume (without checking)
that they got added along with the CloneAny stuff by accident.
Closes #26.
Chris Morgan [Fri, 10 Jun 2016 23:29:32 +0000 ]
Remove now-unnecessary #[allow]s.
Chris Morgan [Mon, 18 Apr 2016 05:00:43 +0000 ]
Make Clippy happy.
Chris Morgan [Sun, 6 Mar 2016 13:13:47 +0000 ]
Keep Clippy happy.
Chris Morgan [Sun, 6 Mar 2016 13:11:37 +0000 ]
Fix order of ptr::copy_nonoverlapping parameters.
Clippy helped me spot this. It didn’t cause any bugs, just bad
performance as all keys would hash to 0 and thus end up in the same
bucket.
Chris Morgan [Sat, 5 Mar 2016 02:31:53 +0000 ]
0.12.0
Chris Morgan [Sat, 5 Mar 2016 02:27:54 +0000 ]
s/unstable/bench/ in travis config
Chris Morgan [Sat, 5 Mar 2016 02:13:19 +0000 ]
Rename "unstable" feature to "bench".
Benchmarking is the only thing that requires unstable Rust in the
library any more. Yay!
Chris Morgan [Sat, 5 Mar 2016 01:58:49 +0000 ]
Ungate drain iterator (stable in Rust 1.6.0).
Chris Morgan [Sat, 5 Mar 2016 01:58:19 +0000 ]
Ungate efficient hashing (stable in Rust 1.7.0).
Chris Morgan [Fri, 22 Jan 2016 01:05:51 +0000 ]
0.11.2: just fixing warnings and such.
Chris Morgan [Wed, 24 Jun 2015 00:08:58 +0000 ]
0.11.1: Rust update for unstable.
Chris Morgan [Wed, 10 Jun 2015 09:26:32 +0000 ]
Test Rust stable on Travis also.
Chris Morgan [Wed, 10 Jun 2015 09:26:10 +0000 ]
Make tests work on beta/stable (benchmarks can’t work).
Chris Morgan [Tue, 9 Jun 2015 23:01:52 +0000 ]
0.11.0: merge concurrency branch.
Chris Morgan [Tue, 9 Jun 2015 22:59:47 +0000 ]
Rename 'nightly' feature to 'unstable'.
Chris Morgan [Sat, 25 Apr 2015 09:28:12 +0000 ]
Implement Debug for Map and RawMap.
Chris Morgan [Sat, 25 Apr 2015 04:01:01 +0000 ]
Replace Cargo features with arcane DST magicks.
(It was a toss-up between “arcane” and “eldritch” there; “arcane” won
this time. “Eldritch”, maybe you can be it next time.)
Chris Morgan [Sat, 18 Apr 2015 06:13:58 +0000 ]
Implement stuff for concurrency.
This took some refactoring too for best effect.
Chris Morgan [Sat, 18 Apr 2015 00:44:34 +0000 ]
0.10.3: Rust beta support
This is accomplished at a certain loss of efficiency, sadly.
Add the 'nightly' feature to get things back how they were.
Chris Morgan [Wed, 15 Apr 2015 04:16:10 +0000 ]
0.10.2: Rust update for clone feature
Chris Morgan [Tue, 14 Apr 2015 00:37:44 +0000 ]
0.10.1: Rust update
Chris Morgan [Fri, 27 Mar 2015 00:05:12 +0000 ]
0.10.0: move Clone functionality into a feature.
No more separate Git branch for it; Cargo features fit the bill well.
Chris Morgan [Wed, 25 Mar 2015 23:28:57 +0000 ]
0.9.13
Chris Morgan [Wed, 25 Mar 2015 22:46:51 +0000 ]
Use std::convert for AnyMap -> RawAnyMap.
Chris Morgan [Wed, 25 Mar 2015 06:59:11 +0000 ]
Rust update.
Chris Morgan [Tue, 24 Mar 2015 02:42:01 +0000 ]
Substantial refactoring, exposing a raw interface.
This is not necessarily the final form, but I think it’s pretty good.
The only alteration to the public interface is the removal of the
iteration methods from `AnyMap`; they are now attached to `RawAnyMap`.
The diff appears considerably more scary than it is in actual fact due
to some comparatively unnecessary changes like the field name (from
`data` to `raw`). Really, it’s minimal.
Chris Morgan [Sat, 21 Mar 2015 05:29:01 +0000 ]
Remove plenty of unnecessary 'statics.
Chris Morgan [Sat, 21 Mar 2015 05:03:25 +0000 ]
Slight Rust update.
Chris Morgan [Thu, 12 Mar 2015 11:58:20 +0000 ]
Remove unused stability markers.
Chris Morgan [Mon, 2 Mar 2015 12:40:27 +0000 ]
0.9.12: Rust update
Chris Morgan [Tue, 24 Feb 2015 00:59:02 +0000 ]
0.9.11: Rust update
Chris Morgan [Wed, 4 Feb 2015 03:45:19 +0000 ]
0.9.10: Rust update
Chris Morgan [Wed, 21 Jan 2015 05:17:18 +0000 ]
0.9.9: Rust update
Chris Morgan [Fri, 9 Jan 2015 01:34:33 +0000 ]
0.9.8: Rust update
Chris Morgan [Tue, 6 Jan 2015 13:39:06 +0000 ]
0.9.7: parity with the collections API
There’s some Rust updating here too.
This entails the addition of various methods and iterator types where
appropriate, based on what’s on `HashMap`, though I doubt that people
will actually be able to make all that much use of the iterators. They’d
be of more use with a basis of a trait other than `Any`, such as might
be conveniently achieved by combining this with my MOPA crate.
(Getting a little close to HKT there, innit?)
You know, I wonder sometimes if anyone ever reads these messages after
they are written, myself included. If you have read this, please drop me
a note; I’m curious.
I’ve also gone over all the stability attributes, marking things as
appropriate.
Chris Morgan [Sat, 3 Jan 2015 08:29:37 +0000 ]
0.9.6
Changed the deprecated `#[deriving(…)]` to `#[derive(…)]`.
(Why not 0.9.5? I messed up, publishing the `clone` branch as 0.9.5.)
Chris Morgan [Tue, 23 Dec 2014 04:23:23 +0000 ]
0.9.4
Chris Morgan [Tue, 23 Dec 2014 02:14:02 +0000 ]
Merge pull request #14 from drbawb/feature/namespaced-enums
Use namespaced enum variants for HashMap `Entry`s
Robert Straw [Mon, 22 Dec 2014 20:33:28 +0000 ]
Do not re-export the `Entry` enum ...
A minor [breaking-change] as downstream users will have to import the variants
themselves, or prefix the variant with the Entry enum's namespace.
Robert Straw [Mon, 22 Dec 2014 15:33:25 +0000 ]
Use namespaced enum variants for the map-entry slots.
Chris Morgan [Wed, 17 Dec 2014 02:48:09 +0000 ]
0.9.3
Chris Morgan [Wed, 17 Dec 2014 02:44:25 +0000 ]
Fix a slightly erroneous comment.
Chris Morgan [Wed, 17 Dec 2014 02:29:49 +0000 ]
Rust update.
Chris Morgan [Wed, 10 Dec 2014 06:51:48 +0000 ]
tuple_indexing is no longer gated! Yay!
Chris Morgan [Fri, 28 Nov 2014 06:18:16 +0000 ]
Update metadata, 0.9.2.
Chris Morgan [Fri, 28 Nov 2014 05:51:35 +0000 ]
Rust update.
Chris Morgan [Wed, 19 Nov 2014 11:16:46 +0000 ]
Bump version to 0.9.1.
Chris Morgan [Wed, 19 Nov 2014 11:15:48 +0000 ]
Implement AnyMap.entry().
Chris Morgan [Fri, 7 Nov 2014 23:24:37 +0000 ]
Rust update.
This includes following the standard new semantics for `insert` and
`remove`, where they return any value that was previously present, and
renaming `find` and `find_mut` to `get` and `get_mut`. For the moment,
I’ve even provided a deprecation path! Will wonders ever cease?
Chris Morgan [Fri, 7 Nov 2014 23:09:21 +0000 ]
Make trait bounds more explicit.
Chris Morgan [Fri, 7 Nov 2014 05:52:26 +0000 ]
Can I diagnose the problem with Rust CI?
Chris Morgan [Fri, 7 Nov 2014 05:45:12 +0000 ]
Drop the Makefile in favour of Cargo.
Chris Morgan [Fri, 7 Nov 2014 05:43:48 +0000 ]
Rust syntax update in README.
Chris Morgan [Fri, 7 Nov 2014 05:37:06 +0000 ]
Get a new Rust CI token.
(Doc uploading doesn't seem to be working.)
Chris Morgan [Fri, 7 Nov 2014 05:26:12 +0000 ]
Elide superfluous lifetimes.
Chris Morgan [Sun, 2 Nov 2014 10:45:52 +0000 ]
Rust update.
Chris Morgan [Mon, 6 Oct 2014 05:39:35 +0000 ]
Remove obsolete managed_heap_memory lint warning.
Chris Morgan [Sun, 28 Sep 2014 22:58:51 +0000 ]
Make Travis use its own Rust support and cargo.
Chris Morgan [Sun, 28 Sep 2014 22:58:08 +0000 ]
Replace a deprecated method call.
Chris Morgan [Mon, 15 Sep 2014 20:32:57 +0000 ]
Add now-necessary lifetime bounds.
Chris Morgan [Sat, 23 Aug 2014 02:12:54 +0000 ]
Ignore Cargo.lock (this is a library).
Chris Morgan [Sat, 23 Aug 2014 02:12:09 +0000 ]
Update Cargo.toml for current conventions.
Chris Morgan [Thu, 14 Aug 2014 07:41:46 +0000 ]
Merge pull request #9 from reem/contains
Add contains method for checking if a type is already in the map.
Jonathan Reem [Thu, 14 Aug 2014 04:01:19 +0000 ]
Add contains method for checking if a type is already in the map.
Chris Morgan [Thu, 10 Jul 2014 08:11:53 +0000 ]
Update for upstream changes.
Also change from rlib/dylib to lib (dylib is not necessary and
complicates matters in this new rpath-free world).
Chris Morgan [Mon, 21 Jul 2014 01:50:04 +0000 ]
Merge pull request #6 from tivek/patch-1
Fix int type inference in range calls
tivek [Sat, 19 Jul 2014 09:32:17 +0000 ]
Fix int type inference in range calls
Chris Morgan [Thu, 3 Jul 2014 02:49:05 +0000 ]
Merge pull request #5 from reem/cargo
Add Cargo Support
Jonathan Reem [Wed, 2 Jul 2014 16:57:03 +0000 ]
Updated versions to 0.9.0.
Jonathan Reem [Wed, 25 Jun 2014 04:44:35 +0000 ]
Enabled Cargo and moved Makefile to use target.
Chris Morgan [Mon, 23 Jun 2014 12:27:50 +0000 ]
Merge pull request #4 from tomassedovic/impl-mutable
Implement Collection and Mutable traits
Tomas Sedovic [Mon, 23 Jun 2014 09:23:54 +0000 ]
Implement Collection and Mutable traits
These just proxy the calls to the underlying hashmap.