From 9204035d979f6c0873191f76ca4edb4046e8d82a Mon Sep 17 00:00:00 2001 From: coolreader18 <33094578+coolreader18@users.noreply.github.com> Date: Wed, 10 Jul 2019 09:41:58 -0500 Subject: [PATCH] Cover up bare trait objects with a dyn --- derive/src/error.rs | 2 +- src/main.rs | 2 +- vm/src/dictdatatype.rs | 2 +- vm/src/obj/objset.rs | 12 +++--- vm/src/obj/objstr.rs | 2 +- vm/src/stdlib/hashlib.rs | 2 +- vm/src/stdlib/os.rs | 6 +-- vm/src/stdlib/pystruct.rs | 80 +++++++++++++++++++++++++++------------ 8 files changed, 70 insertions(+), 38 deletions(-) diff --git a/derive/src/error.rs b/derive/src/error.rs index 8fa805b6ea..1588437e50 100644 --- a/derive/src/error.rs +++ b/derive/src/error.rs @@ -94,7 +94,7 @@ impl Diagnostic { } } - pub fn spanned_error<T: Into<String>>(node: &ToTokens, text: T) -> Diagnostic { + pub fn spanned_error<T: Into<String>>(node: &dyn ToTokens, text: T) -> Diagnostic { Diagnostic { inner: Repr::Single { text: text.into(), diff --git a/src/main.rs b/src/main.rs index f9aab60417..c05a2a9e84 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,7 +28,7 @@ fn main() { } } -fn run() -> Result<(), Box<std::error::Error>> { +fn run() -> Result<(), Box<dyn std::error::Error>> { env_logger::init(); let app = App::new("RustPython") .version(crate_version!()) diff --git a/vm/src/dictdatatype.rs b/vm/src/dictdatatype.rs index e52e83b8c5..24c2ca0921 100644 --- a/vm/src/dictdatatype.rs +++ b/vm/src/dictdatatype.rs @@ -188,7 +188,7 @@ impl<T: Clone> Dict<T> { position.size != self.size || self.entries.len() != position.entries_size } - pub fn keys<'a>(&'a self) -> Box<Iterator<Item = PyObjectRef> + 'a> { + pub fn keys<'a>(&'a self) -> Box<dyn Iterator<Item = PyObjectRef> + 'a> { Box::new( self.entries .iter() diff --git a/vm/src/obj/objset.rs b/vm/src/obj/objset.rs index ede6029f32..cfa8e17017 100644 --- a/vm/src/obj/objset.rs +++ b/vm/src/obj/objset.rs @@ -107,7 +107,7 @@ impl PySetInner { fn _compare_inner( &self, other: &PySetInner, - size_func: &Fn(usize, usize) -> bool, + size_func: fn(usize, usize) -> bool, swap: bool, vm: &VirtualMachine, ) -> PyResult { @@ -127,7 +127,7 @@ impl PySetInner { fn eq(&self, other: &PySetInner, vm: &VirtualMachine) -> PyResult { self._compare_inner( other, - &|zelf: usize, other: usize| -> bool { zelf != other }, + |zelf: usize, other: usize| -> bool { zelf != other }, false, vm, ) @@ -136,7 +136,7 @@ impl PySetInner { fn ge(&self, other: &PySetInner, vm: &VirtualMachine) -> PyResult { self._compare_inner( other, - &|zelf: usize, other: usize| -> bool { zelf < other }, + |zelf: usize, other: usize| -> bool { zelf < other }, false, vm, ) @@ -145,7 +145,7 @@ impl PySetInner { fn gt(&self, other: &PySetInner, vm: &VirtualMachine) -> PyResult { self._compare_inner( other, - &|zelf: usize, other: usize| -> bool { zelf <= other }, + |zelf: usize, other: usize| -> bool { zelf <= other }, false, vm, ) @@ -154,7 +154,7 @@ impl PySetInner { fn le(&self, other: &PySetInner, vm: &VirtualMachine) -> PyResult { self._compare_inner( other, - &|zelf: usize, other: usize| -> bool { zelf < other }, + |zelf: usize, other: usize| -> bool { zelf < other }, true, vm, ) @@ -163,7 +163,7 @@ impl PySetInner { fn lt(&self, other: &PySetInner, vm: &VirtualMachine) -> PyResult { self._compare_inner( other, - &|zelf: usize, other: usize| -> bool { zelf <= other }, + |zelf: usize, other: usize| -> bool { zelf <= other }, true, vm, ) diff --git a/vm/src/obj/objstr.rs b/vm/src/obj/objstr.rs index 36fa619c59..0100e2d389 100644 --- a/vm/src/obj/objstr.rs +++ b/vm/src/obj/objstr.rs @@ -1159,7 +1159,7 @@ fn do_cformat_specifier( fn try_update_quantity_from_tuple( vm: &VirtualMachine, - elements: &mut Iterator<Item = PyObjectRef>, + elements: &mut dyn Iterator<Item = PyObjectRef>, q: &mut Option<CFormatQuantity>, mut tuple_index: usize, ) -> PyResult<usize> { diff --git a/vm/src/stdlib/hashlib.rs b/vm/src/stdlib/hashlib.rs index 719e3a3296..ca74f35f80 100644 --- a/vm/src/stdlib/hashlib.rs +++ b/vm/src/stdlib/hashlib.rs @@ -198,7 +198,7 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef { /// Generic wrapper patching around the hashing libraries. struct HashWrapper { - inner: Box<DynDigest>, + inner: Box<dyn DynDigest>, } impl HashWrapper { diff --git a/vm/src/stdlib/os.rs b/vm/src/stdlib/os.rs index 9dd71fe6ae..58c5081c46 100644 --- a/vm/src/stdlib/os.rs +++ b/vm/src/stdlib/os.rs @@ -307,7 +307,7 @@ impl DirEntryRef { fn perform_on_metadata( self, follow_symlinks: FollowSymlinks, - action: &Fn(fs::Metadata) -> bool, + action: fn(fs::Metadata) -> bool, vm: &VirtualMachine, ) -> PyResult<bool> { let metadata = match follow_symlinks.follow_symlinks { @@ -321,7 +321,7 @@ impl DirEntryRef { fn is_dir(self, follow_symlinks: FollowSymlinks, vm: &VirtualMachine) -> PyResult<bool> { self.perform_on_metadata( follow_symlinks, - &|meta: fs::Metadata| -> bool { meta.is_dir() }, + |meta: fs::Metadata| -> bool { meta.is_dir() }, vm, ) } @@ -329,7 +329,7 @@ impl DirEntryRef { fn is_file(self, follow_symlinks: FollowSymlinks, vm: &VirtualMachine) -> PyResult<bool> { self.perform_on_metadata( follow_symlinks, - &|meta: fs::Metadata| -> bool { meta.is_file() }, + |meta: fs::Metadata| -> bool { meta.is_file() }, vm, ) } diff --git a/vm/src/stdlib/pystruct.rs b/vm/src/stdlib/pystruct.rs index 09f007e607..e910e6f551 100644 --- a/vm/src/stdlib/pystruct.rs +++ b/vm/src/stdlib/pystruct.rs @@ -108,19 +108,19 @@ fn get_int(vm: &VirtualMachine, arg: &PyObjectRef) -> PyResult<BigInt> { objint::to_int(vm, arg, 10) } -fn pack_i8(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> { +fn pack_i8(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut dyn Write) -> PyResult<()> { let v = get_int(vm, arg)?.to_i8().unwrap(); data.write_i8(v).unwrap(); Ok(()) } -fn pack_u8(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> { +fn pack_u8(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut dyn Write) -> PyResult<()> { let v = get_int(vm, arg)?.to_u8().unwrap(); data.write_u8(v).unwrap(); Ok(()) } -fn pack_bool(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> { +fn pack_bool(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut dyn Write) -> PyResult<()> { if objtype::isinstance(&arg, &vm.ctx.bool_type()) { let v = if objbool::get_value(arg) { 1 } else { 0 }; data.write_u8(v).unwrap(); @@ -130,7 +130,11 @@ fn pack_bool(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResu } } -fn pack_i16<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_i16<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -139,7 +143,11 @@ where Ok(()) } -fn pack_u16<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_u16<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -148,7 +156,11 @@ where Ok(()) } -fn pack_i32<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_i32<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -157,7 +169,11 @@ where Ok(()) } -fn pack_u32<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_u32<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -166,7 +182,11 @@ where Ok(()) } -fn pack_i64<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_i64<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -175,7 +195,11 @@ where Ok(()) } -fn pack_u64<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_u64<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -184,7 +208,11 @@ where Ok(()) } -fn pack_f32<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_f32<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -193,7 +221,11 @@ where Ok(()) } -fn pack_f64<Endianness>(vm: &VirtualMachine, arg: &PyObjectRef, data: &mut Write) -> PyResult<()> +fn pack_f64<Endianness>( + vm: &VirtualMachine, + arg: &PyObjectRef, + data: &mut dyn Write, +) -> PyResult<()> where Endianness: byteorder::ByteOrder, { @@ -214,7 +246,7 @@ fn pack_item<Endianness>( vm: &VirtualMachine, code: &FormatCode, arg: &PyObjectRef, - data: &mut Write, + data: &mut dyn Write, ) -> PyResult<()> where Endianness: byteorder::ByteOrder, @@ -287,28 +319,28 @@ fn struct_pack(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult { } } -fn unpack_i8(vm: &VirtualMachine, rdr: &mut Read) -> PyResult { +fn unpack_i8(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult { match rdr.read_i8() { Err(err) => panic!("Error in reading {:?}", err), Ok(v) => Ok(vm.ctx.new_int(v)), } } -fn unpack_u8(vm: &VirtualMachine, rdr: &mut Read) -> PyResult { +fn unpack_u8(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult { match rdr.read_u8() { Err(err) => panic!("Error in reading {:?}", err), Ok(v) => Ok(vm.ctx.new_int(v)), } } -fn unpack_bool(vm: &VirtualMachine, rdr: &mut Read) -> PyResult { +fn unpack_bool(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult { match rdr.read_u8() { Err(err) => panic!("Error in reading {:?}", err), Ok(v) => Ok(vm.ctx.new_bool(v > 0)), } } -fn unpack_i16<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_i16<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -318,7 +350,7 @@ where } } -fn unpack_u16<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_u16<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -328,7 +360,7 @@ where } } -fn unpack_i32<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_i32<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -338,7 +370,7 @@ where } } -fn unpack_u32<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_u32<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -348,7 +380,7 @@ where } } -fn unpack_i64<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_i64<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -358,7 +390,7 @@ where } } -fn unpack_u64<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_u64<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -368,7 +400,7 @@ where } } -fn unpack_f32<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_f32<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -378,7 +410,7 @@ where } } -fn unpack_f64<Endianness>(vm: &VirtualMachine, rdr: &mut Read) -> PyResult +fn unpack_f64<Endianness>(vm: &VirtualMachine, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, { @@ -419,7 +451,7 @@ fn struct_unpack(vm: &VirtualMachine, args: PyFuncArgs) -> PyResult { Ok(vm.ctx.new_tuple(items)) } -fn unpack_code<Endianness>(vm: &VirtualMachine, code: &FormatCode, rdr: &mut Read) -> PyResult +fn unpack_code<Endianness>(vm: &VirtualMachine, code: &FormatCode, rdr: &mut dyn Read) -> PyResult where Endianness: byteorder::ByteOrder, {