簡體   English   中英

函數聲明中更具體的自我

[英]More specific self in function declaration

給出以下代碼:

pub fn handle_events(&mut self) {
    use self::glium::glutin::Event;
    for ev in self.display.poll_events() {
        match ev {
            Event::Closed => self.state = GameState::Exiting,
            Event::KeyboardInput(state, _, Some(key))
                if self.input.keys_pressed.contains_key(&key) =>
                    self.handle_keyboard(state, key),
            _ => (),
        }
    }
}

fn handle_keyboard(&mut self, state: ElementState, key: VirtualKeyCode) {
    ...
}

Rust抱怨self.handle_keyboard(state, key)我不能借用可變的self引用,因為我已經for ev in self.display.poll_events() {行中借了不可變的self.display借用。

如果我只想修改self中的一個字段而不是self.display一個字段,是否可以將其指定給編譯器? 就像這樣:

fn handle_keyboard(&mut self.field, ...)

不,這是不可能的。 看看您是否可以通過其他方式重新安排事情,例如通過可變引用而不是全部self來獲取所需的特定字段。 如果是私有方法,則人體工程學回歸也無關緊要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM