# 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
