trophy-case VS slotmap

Compare trophy-case vs slotmap and see what are their differences.

trophy-case

🏆 Collection of bugs uncovered by fuzzing Rust code (by rust-fuzz)

slotmap

Slotmap data structure for Rust (by orlp)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
trophy-case slotmap
14 14
394 1,039
1.0% -
2.8 3.4
26 days ago 2 months ago
Rust
Creative Commons Zero v1.0 Universal zlib License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

trophy-case

Posts with mentions or reviews of trophy-case. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-16.
  • Rust from a security perspective, where is it vulnerable?
    6 projects | /r/rust | 16 Jan 2023
    You could check cargo-fuzz trophy case, which is a list of issues that have been found via fuzzing.
  • capnproto-rust: out-of-bound memory access bug
    4 projects | /r/rust | 30 Nov 2022
    I've added it to the trophy case.
  • [LWN] A pair of Rust kernel modules
    1 project | /r/linux | 14 Sep 2022
    That said, what's present in what quantities under what circumstances in the Rust fuzzing trophy case does a pretty good job of illustrating how effective the Rust compiler is at ruling out entire classes of bugs.
  • Looking for simple rust programs to crash
    9 projects | /r/rust | 25 Jul 2022
    The same fuzzing techniques applied to Rust yielded a lot of bugs as well. But in Rust's case only 7 out of 340 fuzzer-discovered bugs, or 2%, were memory corruption issues. Naturally, all of the memory corruption bugs were in unsafe code.
  • Everything Is Broken: Shipping rust-minidump at Mozilla, Part 1
    1 project | /r/rust | 15 Jun 2022
    https://github.com/rust-fuzz/trophy-case has like 70 of my issues in it, including the nine minidump bugs
  • Fuzzcheck (a structure-aware Rust fuzzer)
    4 projects | /r/rust | 26 Feb 2022
    If you have found any bugs with this tool, perhaps add them to the Rust fuzz trophy case?
  • Rust is more portable than C for pngquant/libimagequant
    7 projects | /r/rust | 4 Jan 2022
    Source: https://github.com/rust-fuzz/trophy-case (over 40 of those are just from me).
  • Rust takes a major step forward as Linux's second official language
    17 projects | /r/programming | 7 Dec 2021
    But to bring some data, check out the fuzz trophy case. It shows that failures in Rust are most often assertions/panics (equivalent to C++ exception) with memory corruption being relatively rare (it's not never—Rust isn't promising magic—but it's a significant change).
  • Shouldn't have happened: A vulnerability postmortem
    11 projects | news.ycombinator.com | 1 Dec 2021
    You need to read the list more carefully.

    • The list is not for Rust itself, but every program every written in Rust. By itself it doesn't mean much, unless you compare prevalence of issues among Rust programs to prevalence of issues among C programs. For some context, see how memory unsafety is rare compared to assertions and uncaught exceptions: https://github.com/rust-fuzz/trophy-case

    • Many of the memory-unsafety issues are on the C FFI boundary, which is unsafe due to C lacking expressiveness about memory ownership of its APIs (i.e. it shows how dangerous is to program where you don't have the Rust borrow checker checking your code).

    • Many bugs about missing Send/Sync or evil trait implementations are about type-system loopholes that prevented compiler from catching code that was already buggy. C doesn't have these guarantees in the first place, so lack of them is not a CVE for C, but just how C is designed.

  • Safer usage of C++ in Chrome
    1 project | /r/rust | 9 Sep 2021

slotmap

Posts with mentions or reviews of slotmap. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-03-28.
  • Tree Borrows - A new aliasing model for Rust
    6 projects | /r/rust | 28 Mar 2023
    It looks like .get_disjoint_mut() from slotmap failed under stacked borrows, but seems to pass under tree borrows
  • Indexing vs Smart Pointers
    1 project | /r/rust | 22 Feb 2023
    I think slotmap is meant to solve this exact issue. Basically when you insert into a collection you get an Id:Version tuple as key. When you reuse a slot, next time the key will be Id:Version+1 and when you try to access the removed value by using Id:Version, it will return None. You can think about it as delayed invalidation.
  • Hey Rustaceans! Got a question? Ask here (5/2023)!
    19 projects | /r/rust | 30 Jan 2023
    Dunno about existing implementations, but it looks like it's a feature they'd accept: https://github.com/orlp/slotmap/issues/73
  • Unsafe is a bad practice?
    11 projects | /r/rust | 28 Jun 2022
    It's actually quite easy.
  • Rust is more portable than C for pngquant/libimagequant
    7 projects | /r/rust | 4 Jan 2022
  • Hey Rustaceans! Got an easy question? Ask here (50/2021)!
    4 projects | /r/rust | 14 Dec 2021
    You can use either slot map or slab to side step rust borrow checker. Example https://github.com/orlp/slotmap/blob/master/examples/rand_meld_heap.rs
  • Rust data structures with circular references
    3 projects | news.ycombinator.com | 13 Nov 2021
    I don't know, only have some theories.

    1. The name isn't particularly catchy or descriptive. It is the correct name for the data structure, but not too many people know the data structure.

    2. People don't even know what they're missing. It's not a very Google-able problem to begin with. Slotmap provides an interesting solution to (circular) ownership and safe allocator / weak pointer design problems, but people don't recognize that they're having them or that slotmap could help.

    As an example of this, the doubly linked list example (https://github.com/orlp/slotmap/blob/master/examples/doubly_...) can safely remove nodes from the linked list given their handle, in O(1), even from the middle, completely safely and correctly, even in the presence of double deletions or ABA memory re-use. You can't replicate this with just pointers, without introducing heavy refcounting solutions.

  • Is it possible to write anything using 100% safe Rust?
    4 projects | /r/rust | 5 Aug 2021
    Nope, it's perfectly safe: https://github.com/orlp/slotmap/blob/master/examples/doubly_linked_list.rs.
  • Syncing HashMap values amongst User
    2 projects | /r/rust | 6 Jul 2021
    I think keeping the relationship between child and parent elements in the node graph might be better accommodating better via a psuedo-ECS system, see https://www.reddit.com/r/rust/comments/cnjhup/idiomatic_way_to_reference_parent_struct/. The https://github.com/orlp/slotmap crate looks promising. I think I'm just going to ditch the global shared HashMap in favor of something that can better accommodate child/parent relations.
  • Beginner question: does it become easier to write datastructures with complex ownership semantics?
    2 projects | /r/rust | 14 Apr 2021
    I think the slotmap crate is similar to what you're trying to write: https://github.com/orlp/slotmap

What are some alternatives?

When comparing trophy-case and slotmap you can also consider the following projects:

diem - Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world.

rust-typed-arena - The arena, a fast but limited type of allocator

go-fuzz - Randomized testing for Go

slab - Slab allocator for Rust

gccrs - GCC Front-End for Rust

multi_mut - Methods on HashMap and BTreeMap for safely getting multiple mutable references to the contained values.

BLAKE3 - the official Rust and C implementations of the BLAKE3 cryptographic hash function

rust - Rust for the xtensa architecture. Built in targets for the ESP32 and ESP8266

bitwarden_rs - Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs [Moved to: https://github.com/dani-garcia/vaultwarden]

stdx - The missing batteries of Rust

go - The Go programming language

nomicon - The Dark Arts of Advanced and Unsafe Rust Programming