# Project Hints ## Rust Workspace - Rust code lives in `rust/` with a Cargo workspace - Crates: `mailer-core`, `mailer-smtp`, `mailer-security`, `mailer-napi`, `mailer-bin` - `mailer-bin` is the binary target that `tsrust` builds for cross-compilation - `mailer-napi` is a cdylib for N-API bindings (not built by tsrust, needs separate napi-rs build pipeline) - tsrust only supports binary targets (looks for `src/main.rs` or `[[bin]]` entries) - Cross-compilation targets: `linux_amd64`, `linux_arm64` (configured in `npmextra.json`) - Build output goes to `dist_rust/` ## Build - `pnpm build` runs `tsbuild tsfolders && tsrust` - Note: `tsbuild tsfolders` requires a `tsconfig.json` at the project root (currently missing - pre-existing issue) - `tsrust` independently works and produces binaries in `dist_rust/` ## Key Dependencies (Rust) - `tokio` - async runtime - `tokio-rustls` - TLS - `hickory-dns` (hickory-resolver) - DNS resolution - `mail-auth` - DKIM/SPF/DMARC (by Stalwart Labs) - `mailparse` - MIME parsing - `napi` + `napi-derive` - Node.js bindings - `ring` - crypto primitives - `dashmap` - concurrent hash maps