Commit graph

78 commits

Author SHA1 Message Date
Chris Morgan 8bc7c76088 Implement From, not Into 2022-01-26 00:16:15 +11:00
Chris Morgan 2d5be08822 More documentation tweaks to clarify and explain 2022-01-26 00:16:15 +11:00
Chris Morgan 764038fe6e Drop anymap::Any in favour of std::any::Any
Casualties: Any + Sync, CloneAny + Sync. Acceptable losses.
2022-01-26 00:16:15 +11:00
Chris Morgan b07b62fd4d Flatten anymap::any out of existence
Namespaces are one honking great idea, but flat is better than nested.

anymap::raw still makes sense.
2022-01-26 00:16:15 +11:00
Chris Morgan 8f041216ba Tweak docs, especially around safety
No semantic changes.
2022-01-26 00:16:15 +11:00
Chris Morgan 7866ca8d77 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.)
2022-01-26 00:16:15 +11:00
Chris Morgan 521fbfe6bc 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).
2022-01-26 00:16:15 +11:00
Chris Morgan 0656f18289 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.
2022-01-26 00:16:15 +11:00
Chris Morgan bf29e608d9 No more bare trait objects: use dyn Trait syntax 2022-01-26 00:16:15 +11:00
Chris Morgan 8abad057b0 Revert "removed unsafe code in favor of explicit assert"
This reverts commit 479d756c99.

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!
2022-01-26 00:12:16 +11:00
Marcel Hellwig 479d756c99 removed unsafe code in favor of explicit assert 2018-11-13 11:27:14 +01:00
Chris Morgan 0850f5ec36 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.
2017-10-02 14:32:51 +11:00
Chris Morgan b3811cf0d1 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.
2017-07-07 10:55:35 +10:00
Chris Morgan 34028c35e7 Make clippy happy. 2017-01-20 18:10:55 +05:30
Chris Morgan b549457d62 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.
2016-06-11 13:30:33 +10:00
Chris Morgan ec57ec49be 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.
2016-06-11 13:28:30 +10:00
Chris Morgan c52281b376 Use raw pointers for downcasting, not TraitObject
This mirrors a change in mopa.
2016-06-11 10:46:30 +10:00
Chris Morgan 0c3026f7de Add more benchmarking
Including a rustc/llvm pathalogical case.
2016-06-11 10:06:13 +10:00
Chris Morgan 839a6bc6e8 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.
2016-06-11 09:30:24 +10:00
Chris Morgan 8e413e2065 Remove now-unnecessary #[allow]s. 2016-06-11 09:29:32 +10:00
Chris Morgan f38113a9cf Make Clippy happy. 2016-04-18 15:00:43 +10:00
Chris Morgan f63062acc6 Keep Clippy happy. 2016-03-07 00:13:47 +11:00
Chris Morgan 724f94758d 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.
2016-03-07 00:11:37 +11:00
Chris Morgan 016d324c51 Rename "unstable" feature to "bench".
Benchmarking is the only thing that requires unstable Rust in the
library any more. Yay!
2016-03-05 13:13:19 +11:00
Chris Morgan 548ee2a5f2 Ungate drain iterator (stable in Rust 1.6.0). 2016-03-05 12:58:49 +11:00
Chris Morgan 6d0a64dcc9 Ungate efficient hashing (stable in Rust 1.7.0). 2016-03-05 12:58:19 +11:00
Chris Morgan 82f41caeb9 0.11.2: just fixing warnings and such. 2016-01-22 12:05:51 +11:00
Chris Morgan b3def77657 0.11.1: Rust update for unstable. 2015-06-24 10:08:58 +10:00
Chris Morgan c1c6205053 Make tests work on beta/stable (benchmarks can’t work). 2015-06-10 19:26:10 +10:00
Chris Morgan 035fb94cd2 Rename 'nightly' feature to 'unstable'. 2015-06-10 09:02:10 +10:00
Chris Morgan ecb4c45060 Implement Debug for Map and RawMap. 2015-06-10 09:02:10 +10:00
Chris Morgan 7606e75aa4 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.)
2015-06-10 09:02:10 +10:00
Chris Morgan fdba2f45b9 Implement stuff for concurrency.
This took some refactoring too for best effect.
2015-06-10 09:02:10 +10:00
Chris Morgan 18518214c4 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.
2015-04-18 10:54:26 +10:00
Chris Morgan d04bde3509 0.10.2: Rust update for clone feature 2015-04-15 14:16:10 +10:00
Chris Morgan 6a2a404af7 0.10.1: Rust update 2015-04-14 10:37:44 +10:00
Chris Morgan c6480a9172 0.10.0: move Clone functionality into a feature.
No more separate Git branch for it; Cargo features fit the bill well.
2015-03-27 11:05:12 +11:00
Chris Morgan f3fb1c5562 Use std::convert for AnyMap -> RawAnyMap. 2015-03-26 09:46:51 +11:00
Chris Morgan 97ec79029f Rust update. 2015-03-25 17:59:11 +11:00
Chris Morgan 143ee06268 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.
2015-03-24 13:42:01 +11:00
Chris Morgan 9a3d4ae73b Remove plenty of unnecessary 'statics. 2015-03-21 16:29:01 +11:00
Chris Morgan 81698f24f9 Slight Rust update. 2015-03-21 16:03:25 +11:00
Chris Morgan deb7daf170 Remove unused stability markers. 2015-03-12 22:58:20 +11:00
Chris Morgan 94d06205fc 0.9.12: Rust update 2015-03-02 23:40:27 +11:00
Chris Morgan b84ee0b14e 0.9.11: Rust update 2015-02-24 11:59:02 +11:00
Chris Morgan 8e12affa59 0.9.10: Rust update 2015-02-04 14:45:19 +11:00
Chris Morgan 26ca567814 0.9.9: Rust update 2015-01-21 16:17:18 +11:00
Chris Morgan d96c4a32ac 0.9.8: Rust update 2015-01-09 12:34:33 +11:00
Chris Morgan 0e65782e65 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.
2015-01-07 20:51:13 +11:00
Chris Morgan ef020b03ce 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.)
2015-01-03 19:29:37 +11:00