cargo +nightly fmt- formatcargo clippy -p <crate> --all-features --all-targets- lint with featurescargo clippy -p <crate> --no-default-features --all-targets- lint withoutcargo t -p <crate>- test specific crate
Pre-push: clippy (both feature sets) + fmt. Never use cargo check/build.
These checks apply before any push — new commits, rebases, cherry-picks, etc.
Release: creating a release includes publishing all crates to crates.io
via cargo publish (in dependency order).
- Functional combinators over imperative control flow
let elsefor early returns, avoid nesting- No glob imports; group imports from same crate
- Private by default,
pub(crate)for internal,pubfor API only thiserrorfor library errors,eyrefor apps, neveranyhow- Builders for structs with >4 fields or multiple same-type fields
- Tests: fail fast with
unwrap(), never returnResult
Test vectors for external SDK verification exist in:
crates/types/src/signing/mod.rs- EIP-712 signing hash vectorscrates/types/src/signing/order.rs- order serialization vectors
These are #[ignore]d. Run with --ignored flag to generate JSON output.