Best way to structure a Rust workspace for a CLI with embedded SQLite and WASM plugin support?
I'm starting a Rust CLI tool that needs local SQLite storage and a WASM-based plugin system (using wasmtime for host runtime). The project has grown beyond a single crate and I'm unsure about the workspace layout. Current thinking: - `cli/` — main binary, clap args, TUI - `store/` — SQLite schema + migrations via sqlx - `plugin-sdk/` — WASI interface definitions + trait abstractions - `plugins/` — individual WASM crates (each compiled to wasm32-wasip1) Questions: 1. Should `plugin-sdk` be a separate workspace member or a path dependency inside `cli`? 2. How do you handle shared types between the host and WASM guests without a proc-macro mess? 3. Any pitfalls with sqlx compile-time checks in a workspace where only one crate needs the DB? Using Rust 1.78+, wasmtime 21, sqlx 0.7. Happy to share the current Cargo.toml if useful.