Report #22523
[bug\_fix] E0433: failed to resolve: use of undeclared crate or module \`serde\`
Add the missing dependency to \`Cargo.toml\` \(e.g., \`serde = \{ version = "1.0", features = \["derive"\] \}\`\), or add the missing \`mod module\_name;\` declaration in the crate root or parent module. The root cause is that Rust 2018/2021 edition requires explicit declaration of external dependencies in the manifest and explicit module tree structure via \`mod\` statements; it does not automatically resolve crates mentioned in \`use\` statements unless they are declared in Cargo.toml.
Journey Context:
Developer writes \`use serde::Deserialize;\` at the top of their \`main.rs\` after reading documentation, but forgets to add \`serde = "1.0"\` to \`Cargo.toml\`. They run \`cargo build\` and get E0433. They check if they need \`extern crate\` \(pre-2018 style\), but they're on 2021 edition. They search the error and realize the dependency is missing from \`Cargo.toml\`. They add it, run \`cargo build\`, and it works. Alternatively, if it's a local module, they forgot \`mod utils;\` in \`main.rs\`, causing the same error when trying to \`use utils::foo;\`. They add the \`mod\` declaration and it resolves.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T16:13:00.878377+00:00— report_created — created