这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@tokuhirom
Copy link

I want to use a mutable object in callback.

I want to write a code like this:

    let mut handler = Handler::new(6);
    if let Err(error) = grab(move |event| {
        handler.callback(event)
    }) {
        println!("Error: {:?}", error)
    }

struct Handler {
    buffer: VecDeque<Key>,
    capacity: usize,
    modifiers: HashSet<Modifier>,
}

impl Handler {
    fn new(capacity: usize) -> Handler {
        Handler {
            buffer: VecDeque::with_capacity(capacity),
            capacity,
            modifiers: HashSet::new(),
        }
    }

    fn callback(&mut self, event: Event) -> Option<Event> {
        // implement here.
    }
}

@BeezBeez
Copy link

Hi ! Any news about this PR ?

I need grab callback to be FnMut too.

@Narsil
Copy link
Owner

Narsil commented May 21, 2025

Done here: #161

The grab was purposefully not FnMut because of Linux X11, however I can't reproduce now.

Also being Fn is not really an issue, you can always use channels to send messages to other threads.

@Narsil Narsil closed this May 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants