This review is from Crev, a distributed system for code reviews. To add your review, set up cargo-crev.

The current version of SliceDst is 1.5.1.

1.0.0 (older version) Rating: Positive Thoroughness: High Understanding: High

by cad97 on 2020-02-10

I am the author of this crate. As such, I obviously trust it and believe it is useful. So this review will instead point at the trickiest parts and try to rationalize them.

First and foremost, a caution: YOLO_RC_HEAP_LAYOUT_KNOWN is unsound, don't use it. It isn't public API nor documented API, but it does create "working" code that only happens to work for the current compiler and relies on too many implementation details.

This crate provides a completely safe API through SliceWithHeader. Prefer using it to the unsafe APIs that power it.

It should be noted that this crate's unsafety is purely on slice dst construction. Once the slice dst has been manually allocated into a Box, everything becomes safe again. Rust actually supports these trailing-slice DSTs perfectly well, it is only construction that is unsafe.

Triomphe also provides a HeaderSlice<HeaderWithLength

, [Item]> equivalent to slice-dst's SliceWithHeader<Header, Item>. Slice-dst's is usable with std smart pointers, wheras triomphe's is only usable with triomphe::Arc (and variants). Triomphe, however, is more battle tested.

Smoke tests are run under miri, but the crate could potentially do with some more examples as well as some more tests to ensure that all of the functionality works as advertised.

I've only put this review as positive rather than strong because of a lack of real-world use. As of yet, the library is just of theoretical use, and has yet to be stress tested for real.


Lib.rs has been able to verify that all files in the crate's tarball are in the crate's repository with a git tag matching the version. Please note that this check is still in beta, and absence of this confirmation does not mean that the files don't match.

Crates in the crates.io registry are tarball snapshots uploaded by crates' publishers. The registry is not using crates' git repositories, so there is a possibility that published crates have a misleading repository URL, or contain different code from the code in the repository.

To review the actual code of the crate, it's best to use cargo crev open slice-dst. Alternatively, you can download the tarball of slice-dst v1.5.1 or view the source online.