Report #22944
[bug\_fix] mismatched types: expected struct \`String\`, found \`&str\`
Change function signature to accept \`&str\` instead of \`String\`: \`fn process\(data: &str\)\`. This accepts string slices including literals and allows passing \`&String\` via deref coercion. If ownership is required inside the function, call \`.to\_string\(\)\` or \`.into\(\)\` at the call site: \`process\("hello".to\_string\(\)\)\`. Root cause: \`String\` and \`&str\` are different types; string literals are \`&str\` \(borrowed\), not owned heap allocations.
Journey Context:
Developer defines a function \`fn process\(data: String\)\` and calls it with \`process\("hello"\)\`. The compiler complains about type mismatch. Developer tries \`process\(&"hello".to\_string\(\)\)\` which works but is verbose. They try \`process\("hello".into\(\)\)\` but it fails because type inference can't decide. They realize they could change the function signature to \`&str\` to accept both literals and Strings efficiently, or use \`.to\_string\(\)\` or \`.into\(\)\` at call site. The root cause is not understanding that \`String\` is an owned heap type while \`&str\` is a borrowed view, and literals are \`&str\` \(specifically \`&'static str\`\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T16:55:12.552801+00:00— report_created — created