-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expected type for closure arguments not inferred through two nested func calls #16473
Comments
Found a similar bug, but wanted to check since I'm not sure if it's a simplified version of this issue or I should open a new one. Test case (playpen): fn process_123(processor: |&[u8]| -> Vec<u8>) -> Vec<u8> {
processor(&[1, 2, 3])
}
fn main() {
let make_vec = |input/*: &_*/| { // UNCOMMENT THIS TO FIX
let mut vector = Vec::new();
vector.push_all(input);
vector
};
assert_eq!(process_123(make_vec), vec![1, 2, 3]);
} Yields error:
As you can see, explicitly typing the closure param as |
Assuming this is what is causing this playpen to fail: http://is.gd/E7sskd This makes the easy case for a hyper Server fail, which would be a major bummer for those trying hyper at 1.0.0: Server::http(|req, res| {
}).listen(8080); |
Triage: @seanmonstar s playpen still fails today. |
Triage: no change |
1 similar comment
Triage: no change |
…b, r=Veykril Stop eagerly resolving inlay hint text edits for VSCode Send less json over the wire. After microsoft/vscode#193124 was fixed, this change is not needed anymore. VSCode 1.86.0 now supports double click for unresolved hint data too.
Test case:
This yields an error:
which occurs because we did not propagate the expected type and thus instantiated the type of the closure parameter with a fresh variable, rather than using a bound region. Another solution to this issue would be finding a better way to decide when we can generalize lifetimes in closure parameters, rather than relying on the closure type.
There is a workaround: just manually annotate the parameter type.
The text was updated successfully, but these errors were encountered: