Rust codes included in serde's helper attributes like #[serde(default = "default_fn")] or #[serde(skip_serialize_if = "Option::is_none")] are, despite of being string, correctly recognized as Rust codes by rust-analyzer, with
goto definition, syntax highlight, documentation, and much more...
features, just except for syntax highlight. (but in my memory, VSCode could even apply it...)
But #[serde(validate = "...")] is not recognized, maybe due to unsound proc-macro implementation.