This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch avro-3708-fix-clippy-warnings-for-rust-1.67.0 in repository https://gitbox.apache.org/repos/asf/avro.git
commit fccb528f4d9c1857788ab987be1f020d575a95ca Author: Martin Tzvetanov Grigorov <[email protected]> AuthorDate: Fri Jan 27 10:03:24 2023 +0200 [AVRO-3708]: [Rust] Fix clippy warnings introduced with Rust 1.67.0 Update "edition" to 2021 Add "rust-version" with value "1.60.0" Signed-off-by: Martin Tzvetanov Grigorov <[email protected]> --- lang/rust/avro/Cargo.toml | 3 +- lang/rust/avro/examples/benchmark.rs | 9 ++-- lang/rust/avro/examples/generate_interop_data.rs | 6 +-- .../test_interop_single_object_encoding.rs | 4 +- lang/rust/avro/examples/to_value.rs | 2 +- lang/rust/avro/src/de.rs | 3 +- lang/rust/avro/src/encode.rs | 4 +- lang/rust/avro/src/reader.rs | 11 ++-- lang/rust/avro/src/schema.rs | 42 ++++++--------- lang/rust/avro/src/schema_compatibility.rs | 2 +- lang/rust/avro/src/types.rs | 60 +++++++++------------- lang/rust/avro/src/writer.rs | 10 ++-- lang/rust/avro/tests/append_to_existing.rs | 4 +- lang/rust/avro/tests/io.rs | 16 ++---- lang/rust/avro/tests/schema.rs | 20 +++----- lang/rust/avro_derive/Cargo.toml | 3 +- lang/rust/avro_derive/src/lib.rs | 30 ++++------- lang/rust/avro_derive/tests/derive.rs | 12 ++--- lang/rust/avro_test_helper/Cargo.toml | 3 +- lang/rust/avro_test_helper/src/logger.rs | 9 ++-- lang/rust/fuzz/Cargo.toml | 3 +- lang/rust/wasm-demo/Cargo.toml | 3 +- 22 files changed, 105 insertions(+), 154 deletions(-) diff --git a/lang/rust/avro/Cargo.toml b/lang/rust/avro/Cargo.toml index a046b2477..1f61762c2 100644 --- a/lang/rust/avro/Cargo.toml +++ b/lang/rust/avro/Cargo.toml @@ -23,7 +23,8 @@ description = "A library for working with Apache Avro in Rust" license = "Apache-2.0" readme = "README.md" repository = "https://github.com/apache/avro" -edition = "2018" +edition = "2021" +rust-version = "1.60.0" keywords = ["avro", "data", "serialization"] categories = ["encoding"] documentation = "https://docs.rs/apache-avro" diff --git a/lang/rust/avro/examples/benchmark.rs b/lang/rust/avro/examples/benchmark.rs index 1829d2171..4cf0f1365 100644 --- a/lang/rust/avro/examples/benchmark.rs +++ b/lang/rust/avro/examples/benchmark.rs @@ -96,10 +96,7 @@ fn benchmark( let (total_write_secs, total_read_secs) = (seconds(total_duration_write), seconds(total_duration_read)); - println!( - "{}\t\t{}\t\t{}\t\t{}\t\t{}", - count, runs, big_or_small, total_write_secs, total_read_secs - ); + println!("{count}\t\t{runs}\t\t{big_or_small}\t\t{total_write_secs}\t\t{total_read_secs}"); Ok(()) } @@ -115,8 +112,8 @@ fn main() -> anyhow::Result<()> { let small_schema = Schema::parse_str(raw_small_schema)?; let big_schema = Schema::parse_str(raw_big_schema)?; - println!("{:?}", small_schema); - println!("{:?}", big_schema); + println!("{small_schema:?}"); + println!("{big_schema:?}"); let mut small_record = Record::new(&small_schema).unwrap(); small_record.put("field", "foo"); diff --git a/lang/rust/avro/examples/generate_interop_data.rs b/lang/rust/avro/examples/generate_interop_data.rs index eb830e1e3..72b4d10b2 100644 --- a/lang/rust/avro/examples/generate_interop_data.rs +++ b/lang/rust/avro/examples/generate_interop_data.rs @@ -86,10 +86,10 @@ fn main() -> anyhow::Result<()> { let suffix = if codec_name == "null" { "".to_owned() } else { - format!("_{}", codec_name) + format!("_{codec_name}") }; - let file_name = format!("{}/rust{}.avro", data_folder, suffix); + let file_name = format!("{data_folder}/rust{suffix}.avro"); let output_file = std::fs::File::create(&file_name)?; let mut writer = Writer::with_codec(&schema, BufWriter::new(output_file), codec); @@ -98,7 +98,7 @@ fn main() -> anyhow::Result<()> { let datum = create_datum(&schema); writer.append(datum)?; writer.flush()?; - println!("Wrote {}", file_name); + println!("Wrote {file_name}"); } Ok(()) diff --git a/lang/rust/avro/examples/test_interop_single_object_encoding.rs b/lang/rust/avro/examples/test_interop_single_object_encoding.rs index 06fb753ff..ef13465d7 100644 --- a/lang/rust/avro/examples/test_interop_single_object_encoding.rs +++ b/lang/rust/avro/examples/test_interop_single_object_encoding.rs @@ -23,7 +23,7 @@ struct InteropMessage; impl AvroSchema for InteropMessage { fn get_schema() -> apache_avro::Schema { - let schema = std::fs::read_to_string(format!("{}/test_schema.avsc", RESOURCES_FOLDER)) + let schema = std::fs::read_to_string(format!("{RESOURCES_FOLDER}/test_schema.avsc")) .expect("File should exist with schema inside"); apache_avro::Schema::parse_str(schema.as_str()) .expect("File should exist with schema inside") @@ -49,7 +49,7 @@ impl From<InteropMessage> for Value { } fn main() { - let single_object = std::fs::read(format!("{}/test_message.bin", RESOURCES_FOLDER)) + let single_object = std::fs::read(format!("{RESOURCES_FOLDER}/test_message.bin")) .expect("File with single object not found or error occurred while reading it."); test_write(&single_object); test_read(single_object); diff --git a/lang/rust/avro/examples/to_value.rs b/lang/rust/avro/examples/to_value.rs index 69cbe38b6..4a78383e2 100644 --- a/lang/rust/avro/examples/to_value.rs +++ b/lang/rust/avro/examples/to_value.rs @@ -24,6 +24,6 @@ struct Test { fn main() -> anyhow::Result<()> { let test = Test { a: 27, b: "foo" }; let value = apache_avro::to_value(test)?; - println!("{:?}", value); + println!("{value:?}"); Ok(()) } diff --git a/lang/rust/avro/src/de.rs b/lang/rust/avro/src/de.rs index 9204ed146..75ac229c8 100644 --- a/lang/rust/avro/src/de.rs +++ b/lang/rust/avro/src/de.rs @@ -167,8 +167,7 @@ impl<'de> de::EnumAccess<'de> for EnumDeserializer<'de> { self, )), (field, Value::String(_)) => Err(de::Error::custom(format!( - "Expected first field named 'type': got '{}' instead", - field + "Expected first field named 'type': got '{field}' instead" ))), (_, _) => Err(de::Error::custom( "Expected first field of type String or Enum for the type name".to_string(), diff --git a/lang/rust/avro/src/encode.rs b/lang/rust/avro/src/encode.rs index 2ae48f91c..40f4ee0f7 100644 --- a/lang/rust/avro/src/encode.rs +++ b/lang/rust/avro/src/encode.rs @@ -202,7 +202,7 @@ pub(crate) fn encode_internal<S: Borrow<Schema>>( } = *schema { let record_namespace = name.fully_qualified_name(enclosing_namespace).namespace; - for &(ref name, ref value) in fields.iter() { + for (name, value) in fields.iter() { match lookup.get(name) { Some(idx) => { encode_internal( @@ -216,7 +216,7 @@ pub(crate) fn encode_internal<S: Borrow<Schema>>( None => { return Err(Error::NoEntryInLookupTable( name.clone(), - format!("{:?}", lookup), + format!("{lookup:?}"), )); } } diff --git a/lang/rust/avro/src/reader.rs b/lang/rust/avro/src/reader.rs index 3c8ea09b1..442f13075 100644 --- a/lang/rust/avro/src/reader.rs +++ b/lang/rust/avro/src/reader.rs @@ -582,10 +582,9 @@ mod tests { let avro_datum = from_avro_datum(&schema, &mut encoded, None).unwrap(); let parsed_record: TestRecord3240 = match &avro_datum { Value::Record(_) => from_value::<TestRecord3240>(&avro_datum).unwrap(), - unexpected => panic!( - "could not map avro data to struct, found unexpected: {:?}", - unexpected - ), + unexpected => { + panic!("could not map avro data to struct, found unexpected: {unexpected:?}") + } }; assert_eq!(parsed_record, expected_record); @@ -747,7 +746,7 @@ mod tests { } } } - (key, value) => panic!("Unexpected pair: {:?} -> {:?}", key, value), + (key, value) => panic!("Unexpected pair: {key:?} -> {value:?}"), } } TestSingleObjectReader { @@ -756,7 +755,7 @@ mod tests { c, } } else { - panic!("Expected a Value::Record but was {:?}", obj) + panic!("Expected a Value::Record but was {obj:?}") } } } diff --git a/lang/rust/avro/src/schema.rs b/lang/rust/avro/src/schema.rs index 176aab7bc..51a87cd6d 100644 --- a/lang/rust/avro/src/schema.rs +++ b/lang/rust/avro/src/schema.rs @@ -57,7 +57,7 @@ impl fmt::Display for SchemaFingerprint { "{}", self.bytes .iter() - .map(|byte| format!("{:02x}", byte)) + .map(|byte| format!("{byte:02x}")) .collect::<Vec<String>>() .join("") ) @@ -348,10 +348,7 @@ impl<'de> Deserialize<'de> for Name { if let Value::Object(json) = value { Name::parse(&json).map_err(Error::custom) } else { - Err(Error::custom(format!( - "Expected a JSON object: {:?}", - value - ))) + Err(Error::custom(format!("Expected a JSON object: {value:?}"))) } }) } @@ -752,7 +749,7 @@ impl Schema { /// https://avro.apache.org/docs/1.8.2/spec.html#Parsing+Canonical+Form+for+Schemas pub fn canonical_form(&self) -> String { let json = serde_json::to_value(self) - .unwrap_or_else(|e| panic!("Cannot parse Schema from JSON: {0}", e)); + .unwrap_or_else(|e| panic!("Cannot parse Schema from JSON: {e}")); parsing_canonical_form(&json) } @@ -965,7 +962,7 @@ impl Parser { key: &'static str, ) -> Result<DecimalMetadata, Error> { match complex.get(key) { - Some(&Value::Number(ref value)) => parse_json_integer_for_decimal(value), + Some(Value::Number(value)) => parse_json_integer_for_decimal(value), None => { if key == "scale" { Ok(0) @@ -1071,7 +1068,7 @@ impl Parser { } match complex.get("logicalType") { - Some(&Value::String(ref t)) => match t.as_str() { + Some(Value::String(t)) => match t.as_str() { "decimal" => { let inner = Box::new(logical_verify_type( complex, @@ -1157,7 +1154,7 @@ impl Parser { _ => {} } match complex.get("type") { - Some(&Value::String(ref t)) => match t.as_str() { + Some(Value::String(t)) => match t.as_str() { "record" => self.parse_record(complex, enclosing_namespace), "enum" => self.parse_enum(complex, enclosing_namespace), "array" => self.parse_array(complex, enclosing_namespace), @@ -1165,8 +1162,8 @@ impl Parser { "fixed" => self.parse_fixed(complex, enclosing_namespace), other => self.parse_known_schema(other, enclosing_namespace), }, - Some(&Value::Object(ref data)) => self.parse_complex(data, enclosing_namespace), - Some(&Value::Array(ref variants)) => { + Some(Value::Object(data)) => self.parse_complex(data, enclosing_namespace), + Some(Value::Array(variants)) => { let default = complex.get("default"); self.parse_union(variants, enclosing_namespace, default) } @@ -1476,7 +1473,7 @@ fn fix_aliases_namespace(aliases: Option<Vec<String>>, namespace: &Namespace) -> .map(|alias| { if alias.find('.').is_none() { match namespace { - Some(ref ns) => format!("{}.{}", ns, alias), + Some(ref ns) => format!("{ns}.{alias}"), None => alias.clone(), } } else { @@ -1689,10 +1686,7 @@ fn parsing_canonical_form(schema: &Value) -> String { Value::Object(map) => pcf_map(map), Value::String(s) => pcf_string(s), Value::Array(v) => pcf_array(v), - json => panic!( - "got invalid JSON value for canonical form of schema: {0}", - json - ), + json => panic!("got invalid JSON value for canonical form of schema: {json}"), } } @@ -1719,9 +1713,7 @@ fn pcf_map(schema: &Map<String, Value>) -> String { // Invariant: Only valid schemas. Must be a string. let name = v.as_str().unwrap(); let n = match ns { - Some(namespace) if !name.contains('.') => { - Cow::Owned(format!("{}.{}", namespace, name)) - } + Some(namespace) if !name.contains('.') => Cow::Owned(format!("{namespace}.{name}")), _ => Cow::Borrowed(name), }; @@ -1753,7 +1745,7 @@ fn pcf_map(schema: &Map<String, Value>) -> String { .map(|(_, v)| v) .collect::<Vec<_>>() .join(","); - format!("{{{}}}", inter) + format!("{{{inter}}}") } fn pcf_array(arr: &[Value]) -> String { @@ -1762,11 +1754,11 @@ fn pcf_array(arr: &[Value]) -> String { .map(parsing_canonical_form) .collect::<Vec<String>>() .join(","); - format!("[{}]", inter) + format!("[{inter}]") } fn pcf_string(s: &str) -> String { - format!("\"{}\"", s) + format!("\"{s}\"") } const RESERVED_FIELDS: &[&str] = &[ @@ -3817,7 +3809,7 @@ mod tests { if let Schema::Record { ref aliases, .. } = schema { assert_avro_3512_aliases(aliases); } else { - panic!("The Schema should be a record: {:?}", schema); + panic!("The Schema should be a record: {schema:?}"); } } @@ -3841,7 +3833,7 @@ mod tests { if let Schema::Enum { ref aliases, .. } = schema { assert_avro_3512_aliases(aliases); } else { - panic!("The Schema should be an enum: {:?}", schema); + panic!("The Schema should be an enum: {schema:?}"); } } @@ -3863,7 +3855,7 @@ mod tests { if let Schema::Fixed { ref aliases, .. } = schema { assert_avro_3512_aliases(aliases); } else { - panic!("The Schema should be a fixed: {:?}", schema); + panic!("The Schema should be a fixed: {schema:?}"); } } diff --git a/lang/rust/avro/src/schema_compatibility.rs b/lang/rust/avro/src/schema_compatibility.rs index 843a139df..b691041e5 100644 --- a/lang/rust/avro/src/schema_compatibility.rs +++ b/lang/rust/avro/src/schema_compatibility.rs @@ -437,7 +437,7 @@ mod tests { .map(|s| s.canonical_form()) .collect::<Vec<String>>() .join(","); - Schema::parse_str(&format!("[{}]", schema_string)).unwrap() + Schema::parse_str(&format!("[{schema_string}]")).unwrap() } fn empty_union_schema() -> Schema { diff --git a/lang/rust/avro/src/types.rs b/lang/rust/avro/src/types.rs index 940ca17aa..9f3f3d253 100644 --- a/lang/rust/avro/src/types.rs +++ b/lang/rust/avro/src/types.rs @@ -359,7 +359,7 @@ impl Value { (None, None) => None, (None, s @ Some(_)) => s, (s @ Some(_), None) => s, - (Some(reason1), Some(reason2)) => Some(format!("{}\n{}", reason1, reason2)), + (Some(reason1), Some(reason2)) => Some(format!("{reason1}\n{reason2}")), } } @@ -370,7 +370,7 @@ impl Value { enclosing_namespace: &Namespace, ) -> Option<String> { match (self, schema) { - (_, &Schema::Ref { ref name }) => { + (_, Schema::Ref { name }) => { let name = name.fully_qualified_name(enclosing_namespace); names.get(&name).map_or_else( || { @@ -411,14 +411,13 @@ impl Value { (&Value::Fixed(n, _), &Schema::Fixed { size, .. }) => { if n != size { Some(format!( - "The value's size ({}) is different than the schema's size ({})", - n, size + "The value's size ({n}) is different than the schema's size ({size})" )) } else { None } } - (&Value::Bytes(ref b), &Schema::Fixed { size, .. }) => { + (Value::Bytes(b), &Schema::Fixed { size, .. }) => { if b.len() != size { Some(format!( "The bytes' length ({}) is different than the schema's size ({})", @@ -432,8 +431,7 @@ impl Value { (&Value::Fixed(n, _), &Schema::Duration) => { if n != 12 { Some(format!( - "The value's size ('{}') must be exactly 12 to be a Duration", - n + "The value's size ('{n}') must be exactly 12 to be a Duration" )) } else { None @@ -441,42 +439,40 @@ impl Value { } // TODO: check precision against n (&Value::Fixed(_n, _), &Schema::Decimal { .. }) => None, - (&Value::String(ref s), &Schema::Enum { ref symbols, .. }) => { + (Value::String(s), Schema::Enum { symbols, .. }) => { if !symbols.contains(s) { - Some(format!("'{}' is not a member of the possible symbols", s)) + Some(format!("'{s}' is not a member of the possible symbols")) } else { None } } - (&Value::Enum(i, ref s), &Schema::Enum { ref symbols, .. }) => symbols + (&Value::Enum(i, ref s), Schema::Enum { symbols, .. }) => symbols .get(i as usize) .map(|ref symbol| { if symbol != &s { - Some(format!("Symbol '{}' is not at position '{}'", s, i)) + Some(format!("Symbol '{s}' is not at position '{i}'")) } else { None } }) - .unwrap_or_else(|| Some(format!("No symbol at position '{}'", i))), + .unwrap_or_else(|| Some(format!("No symbol at position '{i}'"))), // (&Value::Union(None), &Schema::Union(_)) => None, - (&Value::Union(i, ref value), &Schema::Union(ref inner)) => inner + (&Value::Union(i, ref value), Schema::Union(inner)) => inner .variants() .get(i as usize) .map(|schema| value.validate_internal(schema, names, enclosing_namespace)) - .unwrap_or_else(|| Some(format!("No schema in the union at position '{}'", i))), - (v, &Schema::Union(ref inner)) => match inner.find_schema(v) { + .unwrap_or_else(|| Some(format!("No schema in the union at position '{i}'"))), + (v, Schema::Union(inner)) => match inner.find_schema(v) { Some(_) => None, None => Some("Could not find matching type in union".to_string()), }, - (&Value::Array(ref items), &Schema::Array(ref inner)) => { - items.iter().fold(None, |acc, item| { - Value::accumulate( - acc, - item.validate_internal(inner, names, enclosing_namespace), - ) - }) - } - (&Value::Map(ref items), &Schema::Map(ref inner)) => { + (Value::Array(items), Schema::Array(inner)) => items.iter().fold(None, |acc, item| { + Value::accumulate( + acc, + item.validate_internal(inner, names, enclosing_namespace), + ) + }), + (Value::Map(items), Schema::Map(inner)) => { items.iter().fold(None, |acc, (_, value)| { Value::accumulate( acc, @@ -484,14 +480,7 @@ impl Value { ) }) } - ( - &Value::Record(ref record_fields), - &Schema::Record { - ref fields, - ref lookup, - .. - }, - ) => { + (Value::Record(record_fields), Schema::Record { fields, lookup, .. }) => { let non_nullable_fields_count = fields.iter().filter(|&rf| !rf.is_nullable()).count(); @@ -526,15 +515,12 @@ impl Value { } None => Value::accumulate( acc, - Some(format!( - "There is no schema field for field '{}'", - field_name - )), + Some(format!("There is no schema field for field '{field_name}'")), ), } }) } - (&Value::Map(ref items), &Schema::Record { ref fields, .. }) => { + (Value::Map(items), Schema::Record { fields, .. }) => { fields.iter().fold(None, |acc, field| { if let Some(item) = items.get(&field.name) { let res = item.validate_internal(&field.schema, names, enclosing_namespace); diff --git a/lang/rust/avro/src/writer.rs b/lang/rust/avro/src/writer.rs index 82a5b1387..0c8e4661f 100644 --- a/lang/rust/avro/src/writer.rs +++ b/lang/rust/avro/src/writer.rs @@ -1077,10 +1077,7 @@ mod tests { Err(e @ Error::FileHeaderAlreadyWritten) => { assert_eq!(e.to_string(), "The file metadata is already flushed.") } - Err(e) => panic!( - "Unexpected error occurred while writing user metadata: {:?}", - e - ), + Err(e) => panic!("Unexpected error occurred while writing user metadata: {e:?}"), Ok(_) => panic!("Expected an error that metadata cannot be added after adding data"), } } @@ -1093,11 +1090,10 @@ mod tests { let key = "avro.stringKey".to_string(); match writer.add_user_metadata(key.clone(), "value") { Err(ref e @ Error::InvalidMetadataKey(_)) => { - assert_eq!(e.to_string(), format!("Metadata keys starting with 'avro.' are reserved for internal usage: {}.", key)) + assert_eq!(e.to_string(), format!("Metadata keys starting with 'avro.' are reserved for internal usage: {key}.")) } Err(e) => panic!( - "Unexpected error occurred while writing user metadata with reserved prefix ('avro.'): {:?}", - e + "Unexpected error occurred while writing user metadata with reserved prefix ('avro.'): {e:?}" ), Ok(_) => panic!("Expected an error that the metadata key cannot be prefixed with 'avro.'"), } diff --git a/lang/rust/avro/tests/append_to_existing.rs b/lang/rust/avro/tests/append_to_existing.rs index 4f92f45e9..7b3874746 100644 --- a/lang/rust/avro/tests/append_to_existing.rs +++ b/lang/rust/avro/tests/append_to_existing.rs @@ -79,8 +79,8 @@ fn check(value: AvroResult<Value>, expected: i32) { (_, Value::Int(actual)) => assert_eq!(&expected, actual), _ => panic!("The field value type must be an Int: {:?}!", &fields[0]), }, - _ => panic!("The value type must be a Record: {:?}!", value), + _ => panic!("The value type must be a Record: {value:?}!"), }, - Err(e) => panic!("Error while reading the data: {:?}", e), + Err(e) => panic!("Error while reading the data: {e:?}"), } } diff --git a/lang/rust/avro/tests/io.rs b/lang/rust/avro/tests/io.rs index fc316b060..9d3dc7b79 100644 --- a/lang/rust/avro/tests/io.rs +++ b/lang/rust/avro/tests/io.rs @@ -104,9 +104,7 @@ fn test_validate() { let schema = Schema::parse_str(raw_schema).unwrap(); assert!( value.validate(&schema), - "value {:?} does not validate schema: {}", - value, - raw_schema + "value {value:?} does not validate schema: {raw_schema}" ); } } @@ -160,10 +158,7 @@ fn test_schema_promotion() { Some(&reader_schema), ) .unwrap_or_else(|_| { - panic!( - "failed to decode {:?} with schema: {:?}", - original_value, reader_raw_schema, - ) + panic!("failed to decode {original_value:?} with schema: {reader_raw_schema:?}",) }); assert_eq!(decoded, promotable_values[j]); } @@ -196,10 +191,9 @@ fn test_default_value() { "type": "record", "name": "Test", "fields": [ - {{"name": "H", "type": {}, "default": {}}} + {{"name": "H", "type": {field_type}, "default": {default_json}}} ] - }}"#, - field_type, default_json + }}"# )) .unwrap(); let datum_to_read = Value::Record(vec![("H".to_string(), default_datum.clone())]); @@ -320,6 +314,6 @@ fn test_type_exception() -> Result<(), String> { match encoded { Ok(_) => Err(String::from("Expected ValidationError, got Ok")), Err(Error::Validation) => Ok(()), - Err(ref e) => Err(format!("Expected ValidationError, got {:?}", e)), + Err(ref e) => Err(format!("Expected ValidationError, got {e:?}")), } } diff --git a/lang/rust/avro/tests/schema.rs b/lang/rust/avro/tests/schema.rs index 626b01ba5..83cd6c502 100644 --- a/lang/rust/avro/tests/schema.rs +++ b/lang/rust/avro/tests/schema.rs @@ -653,10 +653,10 @@ fn test_correct_recursive_extraction() { assert_eq!("X", recursive_type.name.as_str()); } } else { - panic!("inner schema {:?} should have been a record", inner_schema) + panic!("inner schema {inner_schema:?} should have been a record") } } else { - panic!("outer schema {:?} should have been a record", outer_schema) + panic!("outer schema {outer_schema:?} should have been a record") } } @@ -668,15 +668,12 @@ fn test_parse() { if *valid { assert!( schema.is_ok(), - "schema {} was supposed to be valid; error: {:?}", - raw_schema, - schema, + "schema {raw_schema} was supposed to be valid; error: {schema:?}", ) } else { assert!( schema.is_err(), - "schema {} was supposed to be invalid", - raw_schema + "schema {raw_schema} was supposed to be invalid" ) } } @@ -1268,10 +1265,7 @@ fn test_root_error_is_not_swallowed_on_parse_error() -> Result<(), String> { ); Ok(()) } else { - Err(format!( - "Expected serde_json::error::Error, got {:?}", - error - )) + Err(format!("Expected serde_json::error::Error, got {error:?}")) } } @@ -1329,7 +1323,7 @@ fn test_record_schema_with_cyclic_references() { let mut writer = Writer::with_codec(&schema, Vec::new(), Codec::Null); if let Err(err) = writer.append(datum) { - panic!("An error occurred while writing datum: {:?}", err) + panic!("An error occurred while writing datum: {err:?}") } let bytes = writer.into_inner().unwrap(); assert_eq!(316, bytes.len()); @@ -1339,7 +1333,7 @@ fn test_record_schema_with_cyclic_references() { Some(value) => log::debug!("{:?}", value.unwrap()), None => panic!("No value was read!"), }, - Err(err) => panic!("An error occurred while reading datum: {:?}", err), + Err(err) => panic!("An error occurred while reading datum: {err:?}"), } } diff --git a/lang/rust/avro_derive/Cargo.toml b/lang/rust/avro_derive/Cargo.toml index 36b995560..d0bb0e501 100644 --- a/lang/rust/avro_derive/Cargo.toml +++ b/lang/rust/avro_derive/Cargo.toml @@ -23,7 +23,8 @@ description = "A library for deriving Avro schemata from Rust structs and enums" license = "Apache-2.0" readme = "README.md" repository = "https://github.com/apache/avro" -edition = "2018" +edition = "2021" +rust-version = "1.60.0" keywords = ["avro", "data", "serialization", "derive"] categories = ["encoding"] documentation = "https://docs.rs/apache-avro-derive" diff --git a/lang/rust/avro_derive/src/lib.rs b/lang/rust/avro_derive/src/lib.rs index 8f6a9b70a..77b0c6a24 100644 --- a/lang/rust/avro_derive/src/lib.rs +++ b/lang/rust/avro_derive/src/lib.rs @@ -139,7 +139,7 @@ fn get_data_struct_schema_def( .map_err(|e| { vec![syn::Error::new( field.ident.span(), - format!("Invalid avro default json: \n{}", e), + format!("Invalid avro default json: \n{e}"), )] })?; quote! { @@ -268,7 +268,7 @@ fn type_to_schema_expr(ty: &Type) -> Result<TokenStream, Vec<syn::Error>> { } else { Err(vec![syn::Error::new_spanned( ty, - format!("Unable to generate schema for type: {:?}", ty), + format!("Unable to generate schema for type: {ty:?}"), )]) } } @@ -327,7 +327,7 @@ fn preserve_vec(op: Vec<impl quote::ToTokens>) -> TokenStream { } fn darling_to_syn(e: darling::Error) -> Vec<syn::Error> { - let msg = format!("{}", e); + let msg = format!("{e}"); let token_errors = e.write_errors(); vec![syn::Error::new(token_errors.span(), msg)] } @@ -349,8 +349,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_ok()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -366,8 +365,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_err()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -383,8 +381,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_err()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -401,8 +398,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_ok()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -422,8 +418,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_ok()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -443,8 +438,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_err()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -468,8 +462,7 @@ mod tests { .contains("namespace.testing")) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } @@ -488,8 +481,7 @@ mod tests { assert!(derive_avro_schema(&mut input).is_ok()) } Err(error) => panic!( - "Failed to parse as derive input when it should be able to. Error: {:?}", - error + "Failed to parse as derive input when it should be able to. Error: {error:?}" ), }; } diff --git a/lang/rust/avro_derive/tests/derive.rs b/lang/rust/avro_derive/tests/derive.rs index a2ac0b6bf..a22c6525f 100644 --- a/lang/rust/avro_derive/tests/derive.rs +++ b/lang/rust/avro_derive/tests/derive.rs @@ -60,7 +60,7 @@ mod test_derive { let schema = T::get_schema(); let mut writer = Writer::new(&schema, Vec::new()); if let Err(e) = writer.append_ser(obj) { - panic!("{:?}", e); + panic!("{e:?}"); } writer.into_inner().unwrap() } @@ -77,7 +77,7 @@ mod test_derive { Ok(value) => { return from_value::<T>(&value).unwrap(); } - Err(e) => panic!("{:?}", e), + Err(e) => panic!("{e:?}"), } } unreachable!() @@ -1466,8 +1466,7 @@ mod test_derive { } } else { panic!( - "TestBasicStructWithSkipAttribute schema must be a record schema: {:?}", - derived_schema + "TestBasicStructWithSkipAttribute schema must be a record schema: {derived_schema:?}" ) } assert_eq!(schema, derived_schema); @@ -1533,8 +1532,7 @@ mod test_derive { } } else { panic!( - "TestBasicStructWithRenameAttribute schema must be a record schema: {:?}", - derived_schema + "TestBasicStructWithRenameAttribute schema must be a record schema: {derived_schema:?}" ) } assert_eq!(schema, derived_schema); @@ -1558,7 +1556,7 @@ mod test_derive { let field = fields.get(0).expect("TestRawIdent must contain a field"); assert_eq!(field.name, "type"); } else { - panic!("Unexpected schema type for {:?}", derived_schema) + panic!("Unexpected schema type for {derived_schema:?}") } } } diff --git a/lang/rust/avro_test_helper/Cargo.toml b/lang/rust/avro_test_helper/Cargo.toml index 1589db16a..fb2399921 100644 --- a/lang/rust/avro_test_helper/Cargo.toml +++ b/lang/rust/avro_test_helper/Cargo.toml @@ -18,7 +18,8 @@ [package] name = "apache-avro-test-helper" version = "0.15.0" -edition = "2018" +edition = "2021" +rust-version = "1.60.0" description = "Apache Avro tests helper." authors = ["Apache Avro team <[email protected]>"] license = "Apache-2.0" diff --git a/lang/rust/avro_test_helper/src/logger.rs b/lang/rust/avro_test_helper/src/logger.rs index 87e7d7148..09fc1bede 100644 --- a/lang/rust/avro_test_helper/src/logger.rs +++ b/lang/rust/avro_test_helper/src/logger.rs @@ -57,10 +57,9 @@ pub fn clear_log_messages() { pub fn assert_not_logged(unexpected_message: &str) { match LOG_MESSAGES.borrow().last() { - Some(last_log) if last_log == unexpected_message => panic!( - "The following log message should not have been logged: '{}'", - unexpected_message - ), + Some(last_log) if last_log == unexpected_message => { + panic!("The following log message should not have been logged: '{unexpected_message}'") + } _ => (), } } @@ -74,7 +73,7 @@ pub(crate) fn install() { log::set_logger(&*TEST_LOGGER) .map(|_| log::set_max_level(LevelFilter::Trace)) .map_err(|err| { - eprintln!("Failed to set the custom logger: {:?}", err); + eprintln!("Failed to set the custom logger: {err:?}"); }) .unwrap(); } diff --git a/lang/rust/fuzz/Cargo.toml b/lang/rust/fuzz/Cargo.toml index b2e38b482..c811e481d 100644 --- a/lang/rust/fuzz/Cargo.toml +++ b/lang/rust/fuzz/Cargo.toml @@ -19,7 +19,8 @@ name = "apache-avro-fuzz" version = "0.0.0" publish = false -edition = "2018" +edition = "2021" +rust-version = "1.60.0" [package.metadata] cargo-fuzz = true diff --git a/lang/rust/wasm-demo/Cargo.toml b/lang/rust/wasm-demo/Cargo.toml index c2dda12b0..cfc665570 100644 --- a/lang/rust/wasm-demo/Cargo.toml +++ b/lang/rust/wasm-demo/Cargo.toml @@ -23,7 +23,8 @@ description = "A demo project for testing apache_avro in WebAssembly" license = "Apache-2.0" readme = "README.md" repository = "https://github.com/apache/avro" -edition = "2018" +edition = "2021" +rust-version = "1.60.0" keywords = ["avro", "data", "serialization", "wasm", "web assembly"] categories = ["encoding"] documentation = "https://docs.rs/apache-avro"
