List of crates that improves or experiments with Rust, but may be hard to find

optional - a space efficient Option replacement.

2 Likes

lazy_static - declaring lazily evaluated statics.

5 Likes

Is this still needed with the new notch optimizations? The readme says

Not only does OptionBool improve space efficiency as opposed to Option<bool>

But nowadays bool, Option<bool>, and even Option<Option<bool>> and beyond are all the same size.

8 Likes

I think the original bool use case is gone, but I could see myself using that crate for storing optional floats, using NaN as the None value.

2 Likes

That’s exactly what I plan to use it for.

2 Likes

typenum has no underscore nor does it use a lowly Peano encoding (it’s a binary encoding!)

(edit: okay the peano thing was fixed, but that underscore is still there silently taunting at me)

1 Like

I tried to be careful how I mentioned peano followed by typenum:man_shrugging:

1 Like

https://crates.io/crates/static_assertions

Extended the list from relevant “Crate of the Week” posts.

Can you please link the ‘cargo-specific or related tools’ section?

Done.

cargo license - List all dependencies by licence. There is also some alternative implementation, but I forgot the name.

cargo-lichking. Haven’t researched them for their strengths or weaknesses.

proptest probably derserves a mention alongside quickcheck :slight_smile:

2 Likes

Maintainer of optional here. I was about to deprecate OptionBool when re-running the benchmarks still showed some measurable differences. So yes, it no longer has a space advantage, but it may sometimes have a time advantage.

Even without OptionBool, the crate still has option replacements for other types.

1 Like

Have you filed bugs for those?

2 Likes

cargo-make rust build tool and task runner.
comes with many default tasks to make any project development easier and automated.

rules was an incomplete experiment to bring Perl 6 style regex to rust. There is a lot which could be done to extend the project. I’m not sure if this is the type of thing you’re looking for.

I definitely think this type of thing might be really positive in the long run but it would have be more fully implemented to verify in any fashion.

I made some crates that I think could fit onto the list.

  • array-macro - vec![something; 4] for arrays, not requiring a Copy implementation
  • reexport-proc-macro - probably useless with Rust 2018 where you can go pub use crate_derive::Trait, but allows reexporting a procedural derive, not requiring an user of a crate to have a dependency on derive crate
  • https://crates.io/crates/enum-map - just like EnumMap in Java, except for Rust, a map implementation optimized for enums implemented as an array

I made https://crates.io/crates/query_interface

It’s like mopa but on steroids.

Aaarrggghhh!!! My most hated phrase!!! :grinning:

4 Likes