-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Controller::run_with_error_handler does not allow the handler closure to modify variables outside #2830
Copy link
Copy link
Closed
Labels
feature-requestNew feature or requestNew feature or request
Description
I'm using bat::controller::Controller and I'd like to handle error(s) while printing outputs in my application side. I tried to capture the last error with FnMut closure:
use bat::controller::Controller;
let mut controller = Controller::new(...);
// ...
let inputs = ...;
let mut last_error: Option<MyError> = None;
controller.run_with_error_handler(inputs, |err, _| {
last_error = Some(err.into());
})?;But the handler type is bounded by Fn so it could not modify the variable outside:
error[E0594]: cannot assign to `last_error`, as it is a captured variable in a `Fn` closure
--> src/bat.rs:169:13
|
110 | pub fn print(&self, file: File) -> Result<()> {
| ----- ---------- change this to return `FnMut` instead of `Fn`
...
168 | if controller.run_with_error_handler(vec![input], None, |err, _| {
| -------- in this closure
169 | last_error = Some(err);
| ^^^^^^^^^^^^^^^^^^^^^^ cannot assign
I'd like to request to modify the Fn bound to FnMut to make error handling more flexible.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
feature-requestNew feature or requestNew feature or request