diff --git a/pbjson-build/src/generator/message.rs b/pbjson-build/src/generator/message.rs index 22e0f7d..467f095 100644 --- a/pbjson-build/src/generator/message.rs +++ b/pbjson-build/src/generator/message.rs @@ -89,7 +89,7 @@ fn write_field_empty_predicate( | (FieldType::Scalar(ScalarType::Bytes), FieldModifier::UseDefault) => { write!(writer, "!self.{}.is_empty()", member.rust_field_name()) } - (_, FieldModifier::Optional) | (FieldType::Message(_), _) => { + (_, FieldModifier::Optional) | (FieldType::Message, _) => { write!(writer, "self.{}.is_some()", member.rust_field_name()) } (FieldType::Scalar(ScalarType::F64), FieldModifier::UseDefault) @@ -877,7 +877,7 @@ fn write_deserialize_field( field.rust_type_name() )?; } - FieldType::Message(_) => writeln!( + FieldType::Message => writeln!( writer, "map_.next_value::<::std::option::Option<_>>()?.map({}::{})", resolver.rust_type(&one_of.path), @@ -983,7 +983,7 @@ fn write_deserialize_field( } write!(writer, "{})", Indent(indent + 1))?; } - FieldType::Message(_) => match field.field_modifier { + FieldType::Message => match field.field_modifier { FieldModifier::Repeated => { // No explicit presence for repeated fields write!(writer, "Some(map_.next_value()?)")?; diff --git a/pbjson-build/src/lib.rs b/pbjson-build/src/lib.rs index 912bbee..ce91cbd 100644 --- a/pbjson-build/src/lib.rs +++ b/pbjson-build/src/lib.rs @@ -80,7 +80,7 @@ )] use prost_types::FileDescriptorProto; -use std::io::{BufWriter, Error, ErrorKind, Result, Write}; +use std::io::{BufWriter, Error, Result, Write}; use std::path::PathBuf; use crate::descriptor::{Descriptor, Package}; @@ -205,9 +205,7 @@ impl Builder { pub fn build>(&mut self, prefixes: &[S]) -> Result<()> { let mut output: PathBuf = self.out_dir.clone().map(Ok).unwrap_or_else(|| { std::env::var_os("OUT_DIR") - .ok_or_else(|| { - Error::new(ErrorKind::Other, "OUT_DIR environment variable is not set") - }) + .ok_or_else(|| Error::other("OUT_DIR environment variable is not set")) .map(Into::into) })?; output.push("FILENAME"); diff --git a/pbjson-build/src/message.rs b/pbjson-build/src/message.rs index 6f0e47a..d21406a 100644 --- a/pbjson-build/src/message.rs +++ b/pbjson-build/src/message.rs @@ -52,7 +52,7 @@ impl ScalarType { pub enum FieldType { Scalar(ScalarType), Enum(TypePath), - Message(TypePath), + Message, Map(ScalarType, Box), } @@ -203,7 +203,7 @@ fn field_modifier( Label::Optional => match message.syntax { Syntax::Proto2 => FieldModifier::Optional, Syntax::Proto3 => match field_type { - FieldType::Message(_) => FieldModifier::Optional, + FieldType::Message => FieldModifier::Optional, _ => FieldModifier::UseDefault, }, }, @@ -245,7 +245,7 @@ fn resolve_type(descriptors: &DescriptorSet, type_name: &str) -> FieldType { match maybe_descriptor { Some((path, Descriptor::Enum(_))) => FieldType::Enum(path.clone()), - Some((path, Descriptor::Message(descriptor))) => match descriptor.is_map() { + Some((_path, Descriptor::Message(descriptor))) => match descriptor.is_map() { true => { assert_eq!(descriptor.fields.len(), 2, "expected map to have 2 fields"); let key = &descriptor.fields[0]; @@ -263,7 +263,7 @@ fn resolve_type(descriptors: &DescriptorSet, type_name: &str) -> FieldType { } // Note: This may actually be a group but it is non-trivial to detect this, // they're deprecated, and pbjson doesn't need to be able to distinguish - false => FieldType::Message(path.clone()), + false => FieldType::Message, }, None => panic!("failed to resolve type: {}", type_name), } diff --git a/pbjson-types/descriptors.bin b/pbjson-types/descriptors.bin index c3b3ed2..1b0a47b 100644 Binary files a/pbjson-types/descriptors.bin and b/pbjson-types/descriptors.bin differ diff --git a/pbjson/src/lib.rs b/pbjson/src/lib.rs index ea7828b..90de687 100644 --- a/pbjson/src/lib.rs +++ b/pbjson/src/lib.rs @@ -124,9 +124,11 @@ pub mod private { #[test] fn test_bytes() { for _ in 0..20 { - let mut rng = thread_rng(); - let len = rng.gen_range(50..100); - let raw: Vec<_> = std::iter::from_fn(|| Some(rng.gen())).take(len).collect(); + let mut rng = rand::rng(); + let len = rng.random_range(50..100); + let raw: Vec<_> = std::iter::from_fn(|| Some(rng.random())) + .take(len) + .collect(); for config in [ base64::engine::general_purpose::STANDARD, diff --git a/rust-toolchain.toml b/rust-toolchain.toml index ba3f7e4..ff79a41 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.74" +channel = "1.91" components = ["rustfmt", "clippy"]