Improves Rust code generation (#8564)

* Fixes checks for serde features in flexbuffers crate

* Removes unused MapReaderIndexer use statement

* Fixes warning about nightly cfg usage

Enabling a cfg attribute through cargo::rustc-cfg in build.rs should be coupled with a cargo::rust-check-cfg value so that the compiler knows about the custom cfg. See: https://doc.rust-lang.org/rustc/check-cfg/cargo-specifics.html#cargorustc-check-cfg-for-buildrsbuild-script.

* Migrates usage of deprecated float constants

This update fixes a compiler warning from use of the old constants.

Constants like EPSILON are now directly on the float primitives (e.g. f32::EPSILON) rather than in the f32 module (std::f32::EPSILON).

The new constants have existed since 1.43.0, which appears to be below the MSRV for the flatbuffers crate.

* Fixes incorrect key in flatbuffers Cargo.toml

The old code was using package.rust, which triggered a warning about an unused key:

warning: flatbuffers/rust/flatbuffers/Cargo.toml: unused manifest key: package.rust

The correct key for specifying MSRV is rust-version. See: https://doc.rust-lang.org/cargo/reference/rust-version.html#rust-version.

---------

Co-authored-by: Wouter van Oortmerssen <aardappel@gmail.com>
This commit is contained in:
Cameron Mulhern
2025-12-02 21:06:24 -05:00
committed by GitHub
parent 0e3471d6a7
commit 646a8bc96a
6 changed files with 10 additions and 9 deletions

View File

@@ -9,7 +9,7 @@ homepage = "https://google.github.io/flatbuffers/"
repository = "https://github.com/google/flatbuffers"
keywords = ["flatbuffers", "serialization", "zero-copy"]
categories = ["encoding", "data-structures", "memory-management"]
rust = "1.51"
rust-version = "1.51"
[features]
default = ["std"]

View File

@@ -1,4 +1,4 @@
use rustc_version::{version_meta, Channel};
use rustc_version::{Channel, version_meta};
fn main() {
let version_meta = version_meta().unwrap();
@@ -6,6 +6,7 @@ fn main() {
// To use nightly features we declare this and then we can use
// #[cfg(nightly)]
// for nightly only features
println!("cargo:rustc-check-cfg=cfg(nightly)");
if version_meta.channel == Channel::Nightly {
println!("cargo:rustc-cfg=nightly")
}

View File

@@ -216,7 +216,7 @@ impl<'a> ser::Serializer for &'a mut FlexbufferSerializer {
type Ok = ();
type Error = Error;
fn is_human_readable(&self) -> bool {
cfg!(serialize_human_readable)
cfg!(feature = "serialize_human_readable")
}
fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error> {
self.builder.push(v);

View File

@@ -160,7 +160,7 @@ impl<'de> VariantAccess<'de> for Reader<&'de [u8]> {
impl<'de> Deserializer<'de> for Reader<&'de [u8]> {
type Error = DeserializationError;
fn is_human_readable(&self) -> bool {
cfg!(deserialize_human_readable)
cfg!(feature = "deserialize_human_readable")
}
fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>

View File

@@ -26,7 +26,7 @@ mod serialize;
mod vector;
pub use de::DeserializationError;
pub use iter::ReaderIterator;
pub use map::{MapReader, MapReaderIndexer};
pub use map::MapReader;
pub use vector::VectorReader;
/// All the possible errors when reading a flexbuffer.