Skip to content

repository organization

Alejandro Vaz edited this page Sep 3, 2026 · 4 revisions

the repo looks like this

.github/                // CI + some docs + GitHub README
benches/                // benchmarking files
fuzz/                   // don't touch it, no one knows how it works
src/                    // the source code is here
    borsh.rs            // borsh serialization, deserialization and schema
    comparisons.rs      // eq and ord, total and partial
    conversions.rs      // all the From<X> implementations
    errors.rs           // the error type
    lib.rs              // most important file, it defines SmallVec
    macros.rs           // old, deprecated macros for building smallvec
    mallocsizeof.rs     // size of smallvec feature implementations
    rawsmallvec.rs      // defines RawSmallVec union which contains or points to data
    rayon.rs            // parallel iterator implementation
    references.rs       // deref, asref, borrow, and the mutable equivalents
    serde.rs            // support for serde serialization and deserialization
    taggedlen.rs        // the custom length we use which stores which RawSmallVec variant is active
tests/                  // a lot of tests, mostly one for each feature
...

for CI

all CI is on .github/, and most of it is under workflows/

for docs

there are multiple places with documentation:

  • dir level: AGENTS.md, crates.io README.md, licenses
  • .github/ level: code of conduct, Github readme

only those for now

benchmarking

benchmarking is under benches/

right now there' just one file but that will change

testing

testing is under tests/

tests are split into what they actually test:

  • for normal methods: main.rs
  • individual features: the feature name

source

see diagram above

fuzzing

no one knows honestly, at least not me

I wish it were a joke

Clone this wiki locally