The *name* UncheckedAnyExt was ending up visible in docs, but it had become an increasingly unpleasant name. “Downcast” is suitable, though, being private, it’s not still not perfect. But there’s no point in making it public, as people generally can’t implement it because of coherence rules (I tried). Plus documentation and style changes. As for Extend, eh, that should ideally be in a different commit, but it’s here now, and I’m the only one working on this code base in general, so I permit myself to be slightly lazy from time to time. Trouble was Downcast should never have had an Any supertrait, as it was grossly misleading, leading to type_id giving `dyn Any`’s TypeId rather than the underlying type’s.
3.6 KiB
1.0.0 (unreleased)
Planned once the dust of 1.0.0-beta.1 settles, since 1.0.0-beta.1 ended up being bigger than I’d earlier intended.
1.0.0-beta.2 (unreleased)
- Fixed the broken
Extend
implementation added in 1.0.0-beta.1.
1.0.0-beta.1 (2022-01-25)
-
Removed
anymap::any::Any
in favour of just plaincore::any::Any
, since itsSend
/Sync
story is now long stable.- This loses
Any + Sync
.CloneAny + Sync
is also removed for consistency. (SoAny + Sync
is gone, butAny
,Any + Send
andAny + Send + Sync
remain, plus the same set forCloneAny
.)
- This loses
-
anymap::any::CloneAny
moved toanymap::CloneAny
. With nothing public left inanymap::any
, it is removed. -
Relicensed from MIT/Apache-2.0 to BlueOak-1.0.0/MIT/Apache-2.0.
-
Increased the minimum supported version of Rust from 1.7.0 to 1.36.0.
-
no_std is now possible in the usual way (default Cargo feature 'std'), depending on alloc and hashbrown.
-
Removed the
bench
Cargo feature which was mostly to work around historical Cargo limitations, but was solved by moving benchmarks fromsrc/lib.rs
tobenches/bench.rs
even before those limitations were lifted. The benchmarks still won’t run on anything but nightly, but that don’t signify. -
Implemented
Default
onMap
(not just onRawMap
). -
Added
Entry::{or_default, and_modify}
(std::collections::hash_map parity). -
Removed the
anymap::raw
wrapper layer aroundstd::collections::hash_map
, in favour of exposing the rawHashMap
directly. I think there was a reason I did it that seven years ago, but I think that reason may have dissolved by now, and I can’t think of it and I don’t like the particular safeas_mut
/unsafe insert approach that I used. Because of the hashbrown stuff, I have retainedanymap::RawMap
is an alias, andanymap::raw_hash_map
too. The end result of this is that raw access can finally access things that have stabilised since Rust 1.7.0, and we’ll no longer need to play catch-up. -
Worked around the spurious
where_clauses_object_safety
future-compatibility lint that has been raised since mid-2018. If you put#![allow(where_clauses_object_safety)]
on your binary crates for this reason, you can remove it.
0.12.1 (2017-01-20)
- Remove superfluous Clone bound on Entry methods (#26)
- Consistent application of
#[inline]
where it should be - Fix bad performance (see
724f94758d
for details)
0.12.0 (2016-03-05)
- Ungate
drain
iterator (stable from Rust 1.6.0) - Ungate efficient hashing (stable from Rust 1.7.0)
- Remove
unstable
Cargo feature (in favour of abench
feature for benchmarking)
0.11.2 (2016-01-22)
- Rust warning updates only
0.11.1 (2015-06-24)
- Unstable Rust compatibility updates
0.11.0 (2015-06-10)
- Support concurrent maps (
Send + Sync
bound) - Rename
nightly
feature tounstable
- Implement
Debug
forMap
andRawMap
- Replace
clone
Cargo feature with arcane DST magicks
Older releases (from the initial code on 2014-06-12 to 0.10.3 on 2015-04-18)
I’m not giving a changelog for these artefacts of ancient history. If you really care you can look through the Git history easily enough. Most of the releases were just compensating for changes to the language (that being before Rust 1.0; yes, this crate has been around for a while).
I do think that src/lib.rs
in the first commit is a work of art,
a thing of great beauty worth looking at; its simplicity is delightful,
and it doesn’t even need to contain any unsafe code.