Skip to content

Commit a9053ce

Browse files
Kriskras99default
authored andcommitted
chore: Enable and fix Clippy lints
1 parent 0c62304 commit a9053ce

File tree

25 files changed

+187
-144
lines changed

25 files changed

+187
-144
lines changed

Cargo.toml

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,13 @@ clippy.too_long_first_doc_paragraph = "warn"
5858
clippy.doc_markdown = "warn"
5959
# TODO: Needs more work
6060
#clippy.missing_errors_doc = "warn"
61-
#clippy.missing_panics_doc = "warn"
61+
clippy.missing_panics_doc = "warn"
6262
rust.unexpected_cfgs = { level = "warn", check-cfg = ['cfg(nightly)'] }
6363
clippy.cargo = { level = "warn", priority = -1 }
6464
clippy.multiple_crate_versions = "allow"
65-
# clippy.needless_raw_string_hashes = "warn"
66-
# clippy.missing_panics_doc = "warn"
67-
# clippy.semicolon_if_nothing_returned = "warn"
68-
# clippy.manual_assert = "warn"
69-
# clippy.enum_glob_use = "warn"
70-
# clippy.needless_pass_by_value = "warn"
71-
# clippy.single_match_else = "warn"
65+
clippy.needless_raw_string_hashes = "warn"
66+
clippy.semicolon_if_nothing_returned = "warn"
67+
clippy.manual_assert = "warn"
68+
clippy.enum_glob_use = "warn"
69+
clippy.needless_pass_by_value = "warn"
70+
clippy.single_match_else = "warn"

avro/benches/serde.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ fn bench_small_schema_write_10_000_record_ser(c: &mut Criterion) {
360360
10_000,
361361
"small schema, write 10k records (serde way)",
362362
)
363-
.unwrap()
363+
.unwrap();
364364
}
365365

366366
fn bench_small_schema_read_1_record(c: &mut Criterion) {

avro/benches/single.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ fn bench_small_schema_write_record(c: &mut Criterion) {
180180
.build()
181181
.unwrap()
182182
.write_value_to_vec(record.clone())
183-
})
183+
});
184184
});
185185
}
186186

@@ -192,23 +192,23 @@ fn bench_big_schema_write_record(c: &mut Criterion) {
192192
.build()
193193
.unwrap()
194194
.write_value_to_vec(record.clone())
195-
})
195+
});
196196
});
197197
}
198198

199199
fn bench_small_schema_write_record_reuse_datum_writer(c: &mut Criterion) {
200200
let (schema, record) = make_small_record().unwrap();
201201
let writer = GenericDatumWriter::builder(&schema).build().unwrap();
202202
c.bench_function("small record (reused writer)", |b| {
203-
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record))
203+
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record));
204204
});
205205
}
206206

207207
fn bench_big_schema_write_record_reuse_datum_writer(c: &mut Criterion) {
208208
let (schema, record) = make_big_record().unwrap();
209209
let writer = GenericDatumWriter::builder(&schema).build().unwrap();
210210
c.bench_function("big record (reused writer)", |b| {
211-
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record))
211+
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record));
212212
});
213213
}
214214

@@ -219,7 +219,7 @@ fn bench_small_schema_write_record_no_validation(c: &mut Criterion) {
219219
.build()
220220
.unwrap();
221221
c.bench_function("small record (no validation)", |b| {
222-
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record))
222+
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record));
223223
});
224224
}
225225

@@ -230,7 +230,7 @@ fn bench_big_schema_write_record_no_validation(c: &mut Criterion) {
230230
.build()
231231
.unwrap();
232232
c.bench_function("big record (no validation)", |b| {
233-
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record))
233+
b.iter(|| writer.write_value_ref(&mut Vec::new(), &record));
234234
});
235235
}
236236

avro/examples/test_interop_single_object_encoding.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fn main() -> Result<(), Box<dyn Error>> {
5858
let single_object = std::fs::read(format!("{resource_folder}/test_message.bin"))
5959
.expect("File with single object not found or error occurred while reading it.");
6060
test_write(&single_object);
61-
test_read(single_object);
61+
test_read(&single_object);
6262

6363
Ok(())
6464
}
@@ -69,17 +69,16 @@ fn test_write(expected: &[u8]) {
6969
.expect("Resolving failed")
7070
.write_value(InteropMessage, &mut encoded)
7171
.expect("Encoding failed");
72-
assert_eq!(expected, &encoded)
72+
assert_eq!(expected, &encoded);
7373
}
7474

75-
fn test_read(encoded: Vec<u8>) {
76-
let mut encoded = &encoded[..];
75+
fn test_read(mut encoded: &[u8]) {
7776
let read_message = apache_avro::GenericSingleObjectReader::builder()
7877
.schema(InteropMessage::get_schema())
7978
.build()
8079
.expect("Resolving failed")
8180
.read_value(&mut encoded)
8281
.expect("Decoding failed");
8382
let expected_value: Value = InteropMessage.into();
84-
assert_eq!(expected_value, read_message)
83+
assert_eq!(expected_value, read_message);
8584
}

avro/src/codec.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,10 @@ impl Codec {
108108
#[cfg(feature = "zstandard")]
109109
Codec::Zstandard(settings) => {
110110
use std::io::Write;
111-
let mut encoder =
112-
zstd::Encoder::new(Vec::new(), settings.compression_level as i32).unwrap();
111+
let mut encoder = zstd::Encoder::new(Vec::new(), settings.compression_level as i32)
112+
.map_err(Details::ZstdCompress)?;
113113
encoder.write_all(stream).map_err(Details::ZstdCompress)?;
114-
*stream = encoder.finish().unwrap();
114+
*stream = encoder.finish().map_err(Details::ZstdCompress)?;
115115
}
116116
#[cfg(feature = "bzip")]
117117
Codec::Bzip2(settings) => {
@@ -120,7 +120,9 @@ impl Codec {
120120

121121
let mut encoder = BzEncoder::new(&stream[..], settings.compression());
122122
let mut buffer = Vec::new();
123-
encoder.read_to_end(&mut buffer).unwrap();
123+
encoder
124+
.read_to_end(&mut buffer)
125+
.unwrap_or_else(|_| unreachable!("No I/O errors possible with Vec<u8>"));
124126
*stream = buffer;
125127
}
126128
#[cfg(feature = "xz")]
@@ -130,7 +132,9 @@ impl Codec {
130132

131133
let mut encoder = XzEncoder::new(&stream[..], settings.compression_level as u32);
132134
let mut buffer = Vec::new();
133-
encoder.read_to_end(&mut buffer).unwrap();
135+
encoder
136+
.read_to_end(&mut buffer)
137+
.unwrap_or_else(|_| unreachable!("No I/O errors possible with Vec<u8>"));
134138
*stream = buffer;
135139
}
136140
};
@@ -144,7 +148,7 @@ impl Codec {
144148
Codec::Null => return Ok(()),
145149
Codec::Deflate(_settings) => miniz_oxide::inflate::decompress_to_vec(stream).map_err(|e| {
146150
let err = {
147-
use miniz_oxide::inflate::TINFLStatus::*;
151+
use miniz_oxide::inflate::TINFLStatus::{FailedCannotMakeProgress, BadParam, Adler32Mismatch, Failed, Done, NeedsMoreInput, HasMoreOutput};
148152
use std::io::{Error,ErrorKind};
149153
match e.status {
150154
FailedCannotMakeProgress => Error::from(ErrorKind::UnexpectedEof),
@@ -189,7 +193,7 @@ impl Codec {
189193
let mut decoded = Vec::new();
190194
let buffer_size = zstd_safe::DCtx::in_size();
191195
let buffer = BufReader::with_capacity(buffer_size, &stream[..]);
192-
let mut decoder = zstd::Decoder::new(buffer).unwrap();
196+
let mut decoder = zstd::Decoder::new(buffer).map_err(Details::ZstdDecompress)?;
193197
std::io::copy(&mut decoder, &mut decoded).map_err(Details::ZstdDecompress)?;
194198
decoded
195199
}
@@ -200,7 +204,7 @@ impl Codec {
200204

201205
let mut decoder = BzDecoder::new(&stream[..]);
202206
let mut decoded = Vec::new();
203-
decoder.read_to_end(&mut decoded).unwrap();
207+
decoder.read_to_end(&mut decoded).unwrap_or_else(|_| unreachable!("No I/O errors possible with Vec<u8>"));
204208
decoded
205209
}
206210
#[cfg(feature = "xz")]
@@ -210,7 +214,7 @@ impl Codec {
210214

211215
let mut decoder = XzDecoder::new(&stream[..]);
212216
let mut decoded: Vec<u8> = Vec::new();
213-
decoder.read_to_end(&mut decoded).unwrap();
217+
decoder.read_to_end(&mut decoded).unwrap_or_else(|_| unreachable!("No I/O errors possible with Vec<u8>"));
214218
decoded
215219
}
216220
};

avro/src/rabin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ impl Update for Rabin {
103103

104104
impl FixedOutput for Rabin {
105105
fn finalize_into(self, out: &mut Output<Self>) {
106-
out.copy_from_slice(&self.result.to_le_bytes())
106+
out.copy_from_slice(&self.result.to_le_bytes());
107107
}
108108
}
109109

avro/src/reader/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ impl<R: Read, T: DeserializeOwned> Iterator for ReaderDeser<'_, R, T> {
184184
}
185185

186186
/// Reads the marker bytes from Avro bytes generated earlier by a `Writer`
187+
///
188+
/// # Panics
189+
/// Will panic if `bytes` does not contain at least 16 bytes.
187190
pub fn read_marker(bytes: &[u8]) -> [u8; 16] {
188191
assert!(
189192
bytes.len() > 16,

avro/src/schema/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,9 @@ impl Schema {
464464
/// [Parsing Canonical Form]:
465465
/// https://avro.apache.org/docs/++version++/specification/#parsing-canonical-form-for-schemas
466466
pub fn canonical_form(&self) -> String {
467-
let json = serde_json::to_value(self)
468-
.unwrap_or_else(|e| panic!("Cannot parse Schema from JSON: {e}"));
467+
let json = serde_json::to_value(self).unwrap_or_else(|e| {
468+
unreachable!("Cannot parse Schema from JSON that was just generated: {e}")
469+
});
469470
let mut defined_names = HashSet::new();
470471
parsing_canonical_form(&json, &mut defined_names)
471472
}

avro/src/schema/parser.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ impl Parser {
9696
.expect("Key unexpectedly missing");
9797
let parsed = self.parse(&value, None)?;
9898
self.parsed_schemas
99-
.insert(self.get_schema_type_name(name, value), parsed);
99+
.insert(self.get_schema_type_name(name, &value), parsed);
100100
}
101101
Ok(())
102102
}
@@ -197,7 +197,7 @@ impl Parser {
197197
// parsing a full schema from inside another schema. Other full schema will not inherit namespace
198198
let parsed = self.parse(&value, None)?;
199199
self.parsed_schemas.insert(
200-
self.get_schema_type_name(fully_qualified_name, value),
200+
self.get_schema_type_name(fully_qualified_name, &value),
201201
parsed.clone(),
202202
);
203203

@@ -583,7 +583,7 @@ impl Parser {
583583
doc: complex.doc(),
584584
fields,
585585
lookup,
586-
attributes: self.get_custom_attributes(complex, vec!["fields"]),
586+
attributes: self.get_custom_attributes(complex, &["fields"]),
587587
});
588588

589589
self.register_parsed_schema(&fully_qualified_name, &schema, &aliases);
@@ -593,7 +593,7 @@ impl Parser {
593593
fn get_custom_attributes(
594594
&self,
595595
complex: &Map<String, Value>,
596-
excluded: Vec<&'static str>,
596+
excluded: &[&'static str],
597597
) -> BTreeMap<String, Value> {
598598
let mut custom_attributes: BTreeMap<String, Value> = BTreeMap::new();
599599
for (key, value) in complex {
@@ -675,7 +675,7 @@ impl Parser {
675675
doc: complex.doc(),
676676
symbols,
677677
default,
678-
attributes: self.get_custom_attributes(complex, vec!["symbols", "default"]),
678+
attributes: self.get_custom_attributes(complex, &["symbols", "default"]),
679679
});
680680

681681
self.register_parsed_schema(&fully_qualified_name, &schema, &aliases);
@@ -695,7 +695,7 @@ impl Parser {
695695
.and_then(|items| self.parse(items, enclosing_namespace))?;
696696
Ok(Schema::Array(ArraySchema {
697697
items: Box::new(items),
698-
attributes: self.get_custom_attributes(complex, vec!["items"]),
698+
attributes: self.get_custom_attributes(complex, &["items"]),
699699
}))
700700
}
701701

@@ -712,7 +712,7 @@ impl Parser {
712712

713713
Ok(Schema::Map(MapSchema {
714714
types: Box::new(types),
715-
attributes: self.get_custom_attributes(complex, vec!["values"]),
715+
attributes: self.get_custom_attributes(complex, &["values"]),
716716
}))
717717
}
718718

@@ -778,7 +778,7 @@ impl Parser {
778778
aliases: aliases.clone(),
779779
doc,
780780
size: size as usize,
781-
attributes: self.get_custom_attributes(complex, vec!["size"]),
781+
attributes: self.get_custom_attributes(complex, &["size"]),
782782
});
783783

784784
self.register_parsed_schema(&fully_qualified_name, &schema, &aliases);
@@ -814,7 +814,7 @@ impl Parser {
814814
})
815815
}
816816

817-
fn get_schema_type_name(&self, name: Name, value: Value) -> Name {
817+
fn get_schema_type_name(&self, name: Name, value: &Value) -> Name {
818818
match value.get("type") {
819819
Some(Value::Object(complex_type)) => match complex_type.name() {
820820
Some(name) => Name::new(name).unwrap(),

avro/src/schema/record/field.rs

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -141,45 +141,42 @@ impl RecordField {
141141
) -> AvroResult<()> {
142142
if let Some(value) = default {
143143
let avro_value = types::Value::try_from(value.clone())?;
144-
match field_schema {
145-
Schema::Union(union_schema) => {
146-
let schemas = &union_schema.schemas;
147-
let resolved = schemas.iter().any(|schema| {
148-
avro_value
149-
.to_owned()
150-
.resolve_internal(schema, names, schema.namespace(), &None)
151-
.is_ok()
152-
});
144+
if let Schema::Union(union_schema) = field_schema {
145+
let schemas = &union_schema.schemas;
146+
let resolved = schemas.iter().any(|schema| {
147+
avro_value
148+
.to_owned()
149+
.resolve_internal(schema, names, schema.namespace(), &None)
150+
.is_ok()
151+
});
153152

154-
if !resolved {
155-
let schema: Option<&Schema> = schemas.first();
156-
return match schema {
157-
Some(first_schema) => Err(Details::GetDefaultUnion(
158-
SchemaKind::from(first_schema),
159-
types::ValueKind::from(avro_value),
160-
)
161-
.into()),
162-
None => Err(Details::EmptyUnion.into()),
163-
};
164-
}
153+
if !resolved {
154+
let schema: Option<&Schema> = schemas.first();
155+
return match schema {
156+
Some(first_schema) => Err(Details::GetDefaultUnion(
157+
SchemaKind::from(first_schema),
158+
types::ValueKind::from(avro_value),
159+
)
160+
.into()),
161+
None => Err(Details::EmptyUnion.into()),
162+
};
165163
}
166-
_ => {
167-
let resolved = avro_value
168-
.resolve_internal(field_schema, names, field_schema.namespace(), &None)
169-
.is_ok();
164+
} else {
165+
let resolved = avro_value
166+
.resolve_internal(field_schema, names, field_schema.namespace(), &None)
167+
.is_ok();
170168

171-
if !resolved {
172-
let schemata = names.values().cloned().collect::<Vec<_>>();
173-
return Err(Details::GetDefaultRecordField(
174-
field_name.to_string(),
175-
record_name.to_string(),
176-
field_schema
177-
.independent_canonical_form(&schemata)
178-
.unwrap_or_else(|_| field_schema.canonical_form()),
179-
value.clone(),
180-
)
181-
.into());
182-
}
169+
if !resolved {
170+
let schemata = names.values().cloned().collect::<Vec<_>>();
171+
return Err(Details::GetDefaultRecordField(
172+
field_name.to_string(),
173+
record_name.to_string(),
174+
field_schema
175+
.independent_canonical_form(&schemata)
176+
.unwrap_or_else(|_| field_schema.canonical_form()),
177+
value.clone(),
178+
)
179+
.into());
183180
}
184181
};
185182
}

0 commit comments

Comments
 (0)