From ebf5a64f2074f600cc700466a54277a4091b8d99 Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Sun, 10 Dec 2023 15:23:57 +0100 Subject: [PATCH] address clippy lints --- src/backend/consumer/libei.rs | 4 +- src/backend/consumer/wlroots.rs | 9 +-- src/backend/consumer/x11.rs | 6 ++ src/backend/producer/wayland.rs | 47 +++++-------- src/backend/producer/x11.rs | 6 ++ src/client.rs | 10 ++- src/event.rs | 118 ++++++++++++++++---------------- src/frontend.rs | 4 +- src/frontend/cli.rs | 2 +- src/frontend/gtk.rs | 2 +- src/frontend/gtk/client_row.rs | 2 +- src/frontend/gtk/window.rs | 19 +++-- src/server.rs | 4 +- 13 files changed, 116 insertions(+), 117 deletions(-) diff --git a/src/backend/consumer/libei.rs b/src/backend/consumer/libei.rs index b26e2bb..7e58fac 100644 --- a/src/backend/consumer/libei.rs +++ b/src/backend/consumer/libei.rs @@ -80,7 +80,7 @@ impl LibeiConsumer { let context = ei::Context::new(stream)?; context.flush()?; let events = EiEventStream::new(context.clone())?; - return Ok(Self { + Ok(Self { handshake: false, context, events, @@ -96,7 +96,7 @@ impl LibeiConsumer { capability_mask: 0, sequence: 0, serial: 0, - }); + }) } } diff --git a/src/backend/consumer/wlroots.rs b/src/backend/consumer/wlroots.rs index 6b042d9..6328a84 100644 --- a/src/backend/consumer/wlroots.rs +++ b/src/backend/consumer/wlroots.rs @@ -267,7 +267,7 @@ impl VirtualInput { // insert a frame event after each mouse event pointer.frame(); } - _ => {} + VirtualInput::Kde { .. } => {} } } Event::Keyboard(e) => match e { @@ -330,11 +330,8 @@ impl Dispatch for State { _: &Connection, _: &QueueHandle, ) { - match event { - wl_keyboard::Event::Keymap { format, fd, size } => { - state.keymap = Some((u32::from(format), fd, size)); - } - _ => {} + if let wl_keyboard::Event::Keymap { format, fd, size } = event { + state.keymap = Some((u32::from(format), fd, size)); } } } diff --git a/src/backend/consumer/x11.rs b/src/backend/consumer/x11.rs index e22a44e..6e6044c 100644 --- a/src/backend/consumer/x11.rs +++ b/src/backend/consumer/x11.rs @@ -30,6 +30,12 @@ impl X11Consumer { } } +impl Default for X11Consumer { + fn default() -> Self { + Self::new() + } +} + #[async_trait] impl EventConsumer for X11Consumer { async fn consume(&mut self, event: Event, _: ClientHandle) { diff --git a/src/backend/producer/wayland.rs b/src/backend/producer/wayland.rs index 65c62d9..d75e83e 100644 --- a/src/backend/producer/wayland.rs +++ b/src/backend/producer/wayland.rs @@ -159,7 +159,7 @@ impl Window { let layer_surface = g.layer_shell.get_layer_surface( &surface, - Some(&output), + Some(output), Layer::Overlay, "LAN Mouse Sharing".into(), qh, @@ -221,13 +221,7 @@ fn get_output_configuration(state: &State, pos: Position) -> Vec<(WlOutput, Outp // as an opposite edge of a different output let outputs: Vec = edges .iter() - .filter(|(_, edge)| { - opposite_edges - .iter() - .map(|(_, e)| *e) - .find(|e| e == edge) - .is_none() - }) + .filter(|(_, edge)| !opposite_edges.iter().map(|(_, e)| *e).any(|e| &e == edge)) .map(|(o, _)| o.clone()) .collect(); state @@ -244,7 +238,7 @@ fn draw(f: &mut File, (width, height): (u32, u32)) { for _ in 0..width { if env::var("LM_DEBUG_LAYER_SHELL").ok().is_some() { // AARRGGBB - buf.write_all(&0xFF11d116u32.to_ne_bytes()).unwrap(); + buf.write_all(&0xff11d116u32.to_ne_bytes()).unwrap(); } else { // AARRGGBB buf.write_all(&0x00000000u32.to_ne_bytes()).unwrap(); @@ -468,7 +462,7 @@ impl State { let outputs = get_output_configuration(self, pos); outputs.iter().for_each(|(o, i)| { - let window = Window::new(&self, &self.qh, &o, pos, i.size); + let window = Window::new(self, &self.qh, o, pos, i.size); let window = Rc::new(window); self.client_for_window.push((window, client)); }); @@ -545,19 +539,15 @@ impl EventProducer for WaylandEventProducer { } ClientEvent::Destroy(handle) => { let inner = self.0.get_mut(); - loop { - // remove all windows corresponding to this client - if let Some(i) = inner - .state - .client_for_window - .iter() - .position(|(_, c)| *c == handle) - { - inner.state.client_for_window.remove(i); - inner.state.focused = None; - } else { - break; - } + // remove all windows corresponding to this client + while let Some(i) = inner + .state + .client_for_window + .iter() + .position(|(_, c)| *c == handle) + { + inner.state.client_for_window.remove(i); + inner.state.focused = None; } } } @@ -663,7 +653,7 @@ impl Dispatch for State { .find(|(w, _c)| w.surface == surface) { app.focused = Some((window.clone(), *client)); - app.grab(&surface, pointer, serial.clone(), qh); + app.grab(&surface, pointer, serial, qh); } else { return; } @@ -834,7 +824,7 @@ impl Dispatch for State { // client corresponding to the layer_surface let surface = &window.surface; let buffer = &window.buffer; - surface.attach(Some(&buffer), 0, 0); + surface.attach(Some(buffer), 0, 0); layer_surface.ack_configure(serial); surface.commit(); } @@ -869,16 +859,15 @@ impl Dispatch for State { name, interface, version: _, - } => match interface.as_str() { - "wl_output" => { + } => { + if interface.as_str() == "wl_output" { log::debug!("wl_output global"); state .g .outputs .push(registry.bind::(name, 4, qh, ())) } - _ => {} - }, + } wl_registry::Event::GlobalRemove { .. } => {} _ => {} } diff --git a/src/backend/producer/x11.rs b/src/backend/producer/x11.rs index 7b775f7..ad697d1 100644 --- a/src/backend/producer/x11.rs +++ b/src/backend/producer/x11.rs @@ -16,6 +16,12 @@ impl X11Producer { } } +impl Default for X11Producer { + fn default() -> Self { + Self::new() + } +} + impl EventProducer for X11Producer { fn notify(&mut self, _: ClientEvent) {} diff --git a/src/client.rs b/src/client.rs index 7007af2..01f0dcf 100644 --- a/src/client.rs +++ b/src/client.rs @@ -89,6 +89,12 @@ pub struct ClientManager { clients: Vec>, // HashMap likely not beneficial } +impl Default for ClientManager { + fn default() -> Self { + Self::new() + } +} + impl ClientManager { pub fn new() -> Self { Self { clients: vec![] } @@ -174,12 +180,12 @@ impl ClientManager { } // returns an immutable reference to the client state corresponding to `client` - pub fn get<'a>(&'a self, client: ClientHandle) -> Option<&'a ClientState> { + pub fn get(&self, client: ClientHandle) -> Option<&ClientState> { self.clients.get(client as usize)?.as_ref() } /// returns a mutable reference to the client state corresponding to `client` - pub fn get_mut<'a>(&'a mut self, client: ClientHandle) -> Option<&'a mut ClientState> { + pub fn get_mut(&mut self, client: ClientHandle) -> Option<&mut ClientState> { self.clients.get_mut(client as usize)?.as_mut() } diff --git a/src/event.rs b/src/event.rs index 7f9ba6d..32ab695 100644 --- a/src/event.rs +++ b/src/event.rs @@ -111,11 +111,11 @@ impl Display for Event { impl Event { fn event_type(&self) -> EventType { match self { - Self::Pointer(_) => EventType::POINTER, - Self::Keyboard(_) => EventType::KEYBOARD, - Self::Release() => EventType::RELEASE, - Self::Ping() => EventType::PING, - Self::Pong() => EventType::PONG, + Self::Pointer(_) => EventType::Pointer, + Self::Keyboard(_) => EventType::Keyboard, + Self::Release() => EventType::Release, + Self::Ping() => EventType::Ping, + Self::Pong() => EventType::Pong, } } } @@ -123,10 +123,10 @@ impl Event { impl PointerEvent { fn event_type(&self) -> PointerEventType { match self { - Self::Motion { .. } => PointerEventType::MOTION, - Self::Button { .. } => PointerEventType::BUTTON, - Self::Axis { .. } => PointerEventType::AXIS, - Self::Frame { .. } => PointerEventType::FRAME, + Self::Motion { .. } => PointerEventType::Motion, + Self::Button { .. } => PointerEventType::Button, + Self::Axis { .. } => PointerEventType::Axis, + Self::Frame { .. } => PointerEventType::Frame, } } } @@ -134,28 +134,28 @@ impl PointerEvent { impl KeyboardEvent { fn event_type(&self) -> KeyboardEventType { match self { - KeyboardEvent::Key { .. } => KeyboardEventType::KEY, - KeyboardEvent::Modifiers { .. } => KeyboardEventType::MODIFIERS, + KeyboardEvent::Key { .. } => KeyboardEventType::Key, + KeyboardEvent::Modifiers { .. } => KeyboardEventType::Modifiers, } } } enum PointerEventType { - MOTION, - BUTTON, - AXIS, - FRAME, + Motion, + Button, + Axis, + Frame, } enum KeyboardEventType { - KEY, - MODIFIERS, + Key, + Modifiers, } enum EventType { - POINTER, - KEYBOARD, - RELEASE, - PING, - PONG, + Pointer, + Keyboard, + Release, + Ping, + Pong, } impl TryFrom for PointerEventType { @@ -163,10 +163,10 @@ impl TryFrom for PointerEventType { fn try_from(value: u8) -> Result { match value { - x if x == Self::MOTION as u8 => Ok(Self::MOTION), - x if x == Self::BUTTON as u8 => Ok(Self::BUTTON), - x if x == Self::AXIS as u8 => Ok(Self::AXIS), - x if x == Self::FRAME as u8 => Ok(Self::FRAME), + x if x == Self::Motion as u8 => Ok(Self::Motion), + x if x == Self::Button as u8 => Ok(Self::Button), + x if x == Self::Axis as u8 => Ok(Self::Axis), + x if x == Self::Frame as u8 => Ok(Self::Frame), _ => Err(Box::new(ProtocolError { msg: format!("invalid pointer event type {}", value), })), @@ -179,8 +179,8 @@ impl TryFrom for KeyboardEventType { fn try_from(value: u8) -> Result { match value { - x if x == Self::KEY as u8 => Ok(Self::KEY), - x if x == Self::MODIFIERS as u8 => Ok(Self::MODIFIERS), + x if x == Self::Key as u8 => Ok(Self::Key), + x if x == Self::Modifiers as u8 => Ok(Self::Modifiers), _ => Err(Box::new(ProtocolError { msg: format!("invalid keyboard event type {}", value), })), @@ -188,17 +188,17 @@ impl TryFrom for KeyboardEventType { } } -impl Into> for &Event { - fn into(self) -> Vec { - let event_id = vec![self.event_type() as u8]; - let event_data = match self { +impl From<&Event> for Vec { + fn from(event: &Event) -> Self { + let event_id = vec![event.event_type() as u8]; + let event_data = match event { Event::Pointer(p) => p.into(), Event::Keyboard(k) => k.into(), Event::Release() => vec![], Event::Ping() => vec![], Event::Pong() => vec![], }; - vec![event_id, event_data].concat() + [event_id, event_data].concat() } } @@ -220,11 +220,11 @@ impl TryFrom> for Event { fn try_from(value: Vec) -> Result { let event_id = u8::from_be_bytes(value[..1].try_into()?); match event_id { - i if i == (EventType::POINTER as u8) => Ok(Event::Pointer(value.try_into()?)), - i if i == (EventType::KEYBOARD as u8) => Ok(Event::Keyboard(value.try_into()?)), - i if i == (EventType::RELEASE as u8) => Ok(Event::Release()), - i if i == (EventType::PING as u8) => Ok(Event::Ping()), - i if i == (EventType::PONG as u8) => Ok(Event::Pong()), + i if i == (EventType::Pointer as u8) => Ok(Event::Pointer(value.try_into()?)), + i if i == (EventType::Keyboard as u8) => Ok(Event::Keyboard(value.try_into()?)), + i if i == (EventType::Release as u8) => Ok(Event::Release()), + i if i == (EventType::Ping as u8) => Ok(Event::Ping()), + i if i == (EventType::Pong as u8) => Ok(Event::Pong()), _ => Err(Box::new(ProtocolError { msg: format!("invalid event_id {}", event_id), })), @@ -232,10 +232,10 @@ impl TryFrom> for Event { } } -impl Into> for &PointerEvent { - fn into(self) -> Vec { - let id = vec![self.event_type() as u8]; - let data = match self { +impl From<&PointerEvent> for Vec { + fn from(event: &PointerEvent) -> Self { + let id = vec![event.event_type() as u8]; + let data = match event { PointerEvent::Motion { time, relative_x, @@ -244,7 +244,7 @@ impl Into> for &PointerEvent { let time = time.to_be_bytes(); let relative_x = relative_x.to_be_bytes(); let relative_y = relative_y.to_be_bytes(); - vec![&time[..], &relative_x[..], &relative_y[..]].concat() + [&time[..], &relative_x[..], &relative_y[..]].concat() } PointerEvent::Button { time, @@ -254,19 +254,19 @@ impl Into> for &PointerEvent { let time = time.to_be_bytes(); let button = button.to_be_bytes(); let state = state.to_be_bytes(); - vec![&time[..], &button[..], &state[..]].concat() + [&time[..], &button[..], &state[..]].concat() } PointerEvent::Axis { time, axis, value } => { let time = time.to_be_bytes(); let axis = axis.to_be_bytes(); let value = value.to_be_bytes(); - vec![&time[..], &axis[..], &value[..]].concat() + [&time[..], &axis[..], &value[..]].concat() } PointerEvent::Frame {} => { vec![] } }; - vec![id, data].concat() + [id, data].concat() } } @@ -281,7 +281,7 @@ impl TryFrom> for PointerEvent { Err(e) => return Err(e), }; match event_type { - PointerEventType::MOTION => { + PointerEventType::Motion => { let time = match data.get(2..6) { Some(d) => u32::from_be_bytes(d.try_into()?), None => { @@ -312,7 +312,7 @@ impl TryFrom> for PointerEvent { relative_y, }) } - PointerEventType::BUTTON => { + PointerEventType::Button => { let time = match data.get(2..6) { Some(d) => u32::from_be_bytes(d.try_into()?), None => { @@ -343,7 +343,7 @@ impl TryFrom> for PointerEvent { state, }) } - PointerEventType::AXIS => { + PointerEventType::Axis => { let time = match data.get(2..6) { Some(d) => u32::from_be_bytes(d.try_into()?), None => { @@ -370,7 +370,7 @@ impl TryFrom> for PointerEvent { }; Ok(Self::Axis { time, axis, value }) } - PointerEventType::FRAME => Ok(Self::Frame {}), + PointerEventType::Frame => Ok(Self::Frame {}), } } None => Err(Box::new(ProtocolError { @@ -380,15 +380,15 @@ impl TryFrom> for PointerEvent { } } -impl Into> for &KeyboardEvent { - fn into(self) -> Vec { - let id = vec![self.event_type() as u8]; - let data = match self { +impl From<&KeyboardEvent> for Vec { + fn from(event: &KeyboardEvent) -> Self { + let id = vec![event.event_type() as u8]; + let data = match event { KeyboardEvent::Key { time, key, state } => { let time = time.to_be_bytes(); let key = key.to_be_bytes(); let state = state.to_be_bytes(); - vec![&time[..], &key[..], &state[..]].concat() + [&time[..], &key[..], &state[..]].concat() } KeyboardEvent::Modifiers { mods_depressed, @@ -400,7 +400,7 @@ impl Into> for &KeyboardEvent { let mods_latched = mods_latched.to_be_bytes(); let mods_locked = mods_locked.to_be_bytes(); let group = group.to_be_bytes(); - vec![ + [ &mods_depressed[..], &mods_latched[..], &mods_locked[..], @@ -409,7 +409,7 @@ impl Into> for &KeyboardEvent { .concat() } }; - vec![id, data].concat() + [id, data].concat() } } @@ -424,7 +424,7 @@ impl TryFrom> for KeyboardEvent { Err(e) => return Err(e), }; match event_type { - KeyboardEventType::KEY => { + KeyboardEventType::Key => { let time = match data.get(2..6) { Some(d) => u32::from_be_bytes(d.try_into()?), None => { @@ -451,7 +451,7 @@ impl TryFrom> for KeyboardEvent { }; Ok(KeyboardEvent::Key { time, key, state }) } - KeyboardEventType::MODIFIERS => { + KeyboardEventType::Modifiers => { let mods_depressed = match data.get(2..6) { Some(d) => u32::from_be_bytes(d.try_into()?), None => { diff --git a/src/frontend.rs b/src/frontend.rs index 95d6574..1b48f8d 100644 --- a/src/frontend.rs +++ b/src/frontend.rs @@ -229,11 +229,11 @@ impl FrontendListener { // TODO do simultaneously for tx in self.tx_streams.iter_mut() { // write len + payload - if let Err(_) = tx.write(&len).await { + if tx.write(&len).await.is_err() { keep.push(false); continue; } - if let Err(_) = tx.write(payload).await { + if tx.write(payload).await.is_err() { keep.push(false); continue; } diff --git a/src/frontend/cli.rs b/src/frontend/cli.rs index 81a8df5..7a625c8 100644 --- a/src/frontend/cli.rs +++ b/src/frontend/cli.rs @@ -21,7 +21,7 @@ pub fn run() -> Result<()> { let socket_path = super::FrontendListener::socket_path()?; #[cfg(unix)] - let Ok(mut tx) = UnixStream::connect(&socket_path) else { + let Ok(mut tx) = UnixStream::connect(socket_path) else { return Err(anyhow!("Could not connect to lan-mouse-socket")); }; diff --git a/src/frontend/gtk.rs b/src/frontend/gtk.rs index 5f67e41..18dc874 100644 --- a/src/frontend/gtk.rs +++ b/src/frontend/gtk.rs @@ -175,7 +175,7 @@ fn build_ui(app: &Application) { let index = param.unwrap() .get::() .unwrap(); - let Some(client) = window.clients().item(index as u32) else { + let Some(client) = window.clients().item(index) else { return; }; let client = client.downcast_ref::().unwrap(); diff --git a/src/frontend/gtk/client_row.rs b/src/frontend/gtk/client_row.rs index b0897d4..072ef0e 100644 --- a/src/frontend/gtk/client_row.rs +++ b/src/frontend/gtk/client_row.rs @@ -63,7 +63,7 @@ impl ClientRow { let port_binding = client_object .bind_property("port", &self.imp().port.get(), "text") .transform_from(|_, v: String| { - if v == "" { + if v.is_empty() { Some(DEFAULT_PORT as u32) } else { Some(v.parse::().unwrap_or(DEFAULT_PORT) as u32) diff --git a/src/frontend/gtk/window.rs b/src/frontend/gtk/window.rs index 066e39f..bc336d7 100644 --- a/src/frontend/gtk/window.rs +++ b/src/frontend/gtk/window.rs @@ -85,16 +85,13 @@ impl Window { } pub fn client_idx(&self, handle: ClientHandle) -> Option { - self.clients() - .iter::() - .position(|c| { - if let Ok(c) = c { - c.handle() == handle - } else { - false - } - }) - .map(|p| p as usize) + self.clients().iter::().position(|c| { + if let Ok(c) = c { + c.handle() == handle + } else { + false + } + }) } pub fn delete_client(&self, handle: ClientHandle) { @@ -117,7 +114,7 @@ impl Window { pub fn request_port_change(&self) { let port = self.imp().port_entry.get().text().to_string(); - if let Ok(port) = u16::from_str_radix(port.as_str(), 10) { + if let Ok(port) = port.as_str().parse::() { self.request(FrontendEvent::ChangePort(port)); } else { self.request(FrontendEvent::ChangePort(DEFAULT_PORT)); diff --git a/src/server.rs b/src/server.rs index ce56a32..f37630f 100644 --- a/src/server.rs +++ b/src/server.rs @@ -132,9 +132,7 @@ impl Server { // safety: cancellation safe e = self.consumer.dispatch() => { log::trace!("-> consumer.dispatch()"); - if let Err(e) = e { - return Err(e); - } + e?; } // safety: cancellation safe _ = signal::ctrl_c() => {