{"record":{"id":"65ec18c298eeacb6","repo":"tokio-rs/tokio","slug":"failed-to-parse-value-of-as-path","errorCode":null,"errorMessage":"Failed to parse value of `{}` as path: \"{}\"","messagePattern":"Failed to parse value of `(.+?)` as path: \"(.+?)\"","errorType":"validation","errorClass":"syn::Error","httpStatus":null,"severity":"error","filePath":"tokio-macros/src/entry.rs","lineNumber":287,"sourceCode":"\nfn parse_string(int: syn::Lit, span: Span, field: &str) -> Result<String, syn::Error> {\n    match int {\n        syn::Lit::Str(s) => Ok(s.value()),\n        syn::Lit::Verbatim(s) => Ok(s.to_string()),\n        _ => Err(syn::Error::new(\n            span,\n            format!(\"Failed to parse value of `{field}` as string.\"),\n        )),\n    }\n}\n\nfn parse_path(lit: syn::Lit, span: Span, field: &str) -> Result<Path, syn::Error> {\n    match lit {\n        syn::Lit::Str(s) => {\n            let err = syn::Error::new(\n                span,\n                format!(\n                    \"Failed to parse value of `{}` as path: \\\"{}\\\"\",\n                    field,\n                    s.value()\n                ),\n            );\n            s.parse::<syn::Path>().map_err(|_| err.clone())\n        }\n        _ => Err(syn::Error::new(\n            span,\n            format!(\"Failed to parse value of `{field}` as path.\"),\n        )),\n    }\n}\n\nfn parse_bool(bool: syn::Lit, span: Span, field: &str) -> Result<bool, syn::Error> {\n    match bool {\n        syn::Lit::Bool(b) => Ok(b.value),\n        _ => Err(syn::Error::new(\n            span,","sourceCodeStart":269,"sourceCodeEnd":305,"githubUrl":"https://github.com/tokio-rs/tokio/blob/625954f365727668cb02d04172b34f1149637728/tokio-macros/src/entry.rs#L269-L305","documentation":"Compile-time error from `parse_path` when the value IS a string literal but its contents cannot be parsed as a `syn::Path`. Used only by the `crate` field (see `set_crate_name` calling `parse_path(..., \"crate\")` in entry.rs:160). The offending string is echoed back in the message.","triggerScenarios":"`#[tokio::main(crate = \"123\")]`, `crate = \"with spaces\"`, `crate = \"@@@\"`, or any string that is not a valid Rust path — e.g. a renamed-crate path that isn't a valid identifier path.","commonSituations":"Using `crate = \"my_tokio\"` to redirect to a vendored/renamed tokio but mistyping it; pasting a version number, a URL, or a freeform label instead of a path; confusing it with a Cargo feature name.","solutions":["Supply a valid Rust path expression: `#[tokio::main(crate = \"my_tokio\")]` where `my_tokio` is the actual crate name in `Cargo.toml`.","Remove the `crate = ...` option entirely if you are not repointing tokio.","Verify the crate is actually a dependency under that exact name."],"exampleFix":"// before\n#[tokio::main(crate = \"my tokio\")]\nasync fn main() {}\n\n// after\n#[tokio::main(crate = \"my_tokio\")]\nasync fn main() {}","handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Provide the `crate` option only when repointing to a renamed tokio, and quote a valid Rust path.","Use the exact crate name from `Cargo.toml`.","Omit `crate = ...` entirely in normal projects."],"tags":["rust","tokio","macros","configuration","compile-time"],"backgroundTag":null,"analyzedSha":"625954f365727668cb02d04172b34f1149637728","analyzedAt":"2026-08-11T17:46:45.378Z","contentChangedAt":"2026-08-11T17:46:45.378Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}