From 0cd015222e80497c823fc0eadc8f55c45860bade Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 23 Sep 2018 19:17:16 -0400 Subject: clippy --- src/cell.rs | 28 +++++++--------------------- src/lib.rs | 6 ++++++ src/screen.rs | 58 +++++++++++++++------------------------------------------- 3 files changed, 28 insertions(+), 64 deletions(-) diff --git a/src/cell.rs b/src/cell.rs index abec58f..bf50817 100644 --- a/src/cell.rs +++ b/src/cell.rs @@ -21,9 +21,7 @@ impl Cell { pub fn contents(&self) -> &str { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; let contents: &[u8] = unsafe { std::slice::from_raw_parts( &(*prefix).contents as *const i8 as *const u8, @@ -35,18 +33,14 @@ impl Cell { pub fn fgcolor(&self) -> color::Color { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; let attrs = unsafe { &(*prefix).attrs }; color::Color::new(&attrs.fgcolor) } pub fn bgcolor(&self) -> color::Color { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; let attrs = unsafe { &(*prefix).attrs }; color::Color::new(&attrs.bgcolor) } @@ -58,9 +52,7 @@ impl Cell { pub fn bold(&self) -> bool { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_bold(&mut (*prefix).attrs) != 0 } @@ -68,9 +60,7 @@ impl Cell { pub fn italic(&self) -> bool { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_italic(&mut (*prefix).attrs) != 0 } @@ -78,9 +68,7 @@ impl Cell { pub fn underline(&self) -> bool { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_underline(&mut (*prefix).attrs) != 0 } @@ -88,9 +76,7 @@ impl Cell { pub fn inverse(&self) -> bool { let Cell(cell_impl) = *self; - let prefix: *mut CellPrefix = unsafe { - std::mem::transmute(cell_impl) - }; + let prefix: *mut CellPrefix = cell_impl as *mut CellPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_inverse(&mut (*prefix).attrs) != 0 } diff --git a/src/lib.rs b/src/lib.rs index 58d9b2c..5134d43 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,9 @@ +#![cfg_attr(feature = "cargo-clippy", feature(tool_lints))] +// we use empty enums to represent opaque c pointers, but we don't have a way +// to indicate that those pointers do actually have additional alignment +// restrictions, so casting them to their prefixes is actually safe +#![cfg_attr(feature = "cargo-clippy", allow(clippy::cast_ptr_alignment))] + extern crate libc; mod cell; diff --git a/src/screen.rs b/src/screen.rs index 64226c6..58986c7 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -49,17 +49,13 @@ impl Screen { pub fn rows(&self) -> i32 { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { (*(*prefix).grid).max.row } } pub fn cols(&self) -> i32 { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { (*(*prefix).grid).max.col } } @@ -91,9 +87,7 @@ impl Screen { col_end: i32 ) -> String { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; // XXX not super happy about this - can we maybe disable the // optimization in libvt100 if no scrollback at all was requested? @@ -148,9 +142,7 @@ impl Screen { col_end: i32 ) -> String { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; let grid_max_row = unsafe { (*(*prefix).grid).max.row }; let row_count = unsafe { (*(*prefix).grid).row_count }; @@ -208,9 +200,7 @@ impl Screen { pub fn cursor_position(&self) -> (i32, i32) { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { ((*(*prefix).grid).cur.row, (*(*prefix).grid).cur.col) } @@ -218,9 +208,7 @@ impl Screen { pub fn title(&self) -> Option<&str> { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; if unsafe { (*prefix).title }.is_null() { None } @@ -237,9 +225,7 @@ impl Screen { pub fn icon_name(&self) -> Option<&str> { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; if unsafe { (*prefix).icon_name }.is_null() { None } @@ -256,27 +242,21 @@ impl Screen { pub fn fgcolor(&self) -> color::Color { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; let attrs = unsafe { &(*prefix).attrs }; color::Color::new(&attrs.fgcolor) } pub fn bgcolor(&self) -> color::Color { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; let attrs = unsafe { &(*prefix).attrs }; color::Color::new(&attrs.bgcolor) } pub fn bold(&self) -> bool { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_bold(&mut (*prefix).attrs) != 0 } @@ -284,9 +264,7 @@ impl Screen { pub fn italic(&self) -> bool { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_italic(&mut (*prefix).attrs) != 0 } @@ -294,9 +272,7 @@ impl Screen { pub fn underline(&self) -> bool { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_underline(&mut (*prefix).attrs) != 0 } @@ -304,9 +280,7 @@ impl Screen { pub fn inverse(&self) -> bool { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; unsafe { ffi::vt100_wrapper_cell_attrs_inverse(&mut (*prefix).attrs) != 0 } @@ -370,10 +344,8 @@ impl Screen { pub fn alternate_buffer_active(&self) -> bool { let Screen(screen_impl) = *self; - let prefix: *mut ScreenPrefix = unsafe { - std::mem::transmute(screen_impl) - }; - return !unsafe { (*prefix).alternate }.is_null(); + let prefix: *mut ScreenPrefix = screen_impl as *mut ScreenPrefix; + !unsafe { (*prefix).alternate }.is_null() } pub fn check_visual_bell(&self) -> bool { -- cgit v1.2.3-54-g00ecf