mirror of
https://github.com/google/flatbuffers.git
synced 2026-06-05 04:58:57 +00:00
Rust reflection: simplify dependencies, fix Android build compatibility (#8512)
* flatbuffers Rust reflection: replace num with num-traits num crate is a wrapper over num-traits and a few other crates, that reexports the APIs from all of them. We only need num-traits. Signed-off-by: Marcin Radomski <dextero@google.com> * Rust reflection: drop dependency on stdint crate We only use it to get intmax_t for deriving alignment, which is an alias for `core::ffi::c_long` [1]. We can use that directly instead. [1] https://docs.rs/stdint/1.0.0/stdint/type.intmax_t.html Signed-off-by: Marcin Radomski <dextero@google.com> * Rust reflection: drop dependency on escape_string crate It's used to format a string used for debugging only, so we might as well use the builtin Debug representation of a string. Signed-off-by: Marcin Radomski <dextero@google.com> * Rust codegen: add derives on generated bitflags Otherwise it limits the use of structs generated for reflection.fbs in Rust reflection API. Signed-off-by: Marcin Radomski <dextero@google.com> * Rust flatbuffers: update bitflags dependency to 2.8 Signed-off-by: Marcin Radomski <dextero@google.com> * Rust codegen: use bitflags v2 API for converting from bits from_bits_unchecked was replaced with safe from_bits_retain. Signed-off-by: Marcin Radomski <dextero@google.com> * Regenerate Rust code after idl change Signed-off-by: Marcin Radomski <dextero@google.com> * Regenerate reflection_generated.rs With flatc --rust ../../../reflection/reflection.fbs Signed-off-by: Marcin Radomski <dextero@google.com> * ts/BUILD.bazel: add missing import Found by Buildifire presubmit: Function "sh_binary" is not global anymore and needs to be loaded from "@rules_shell//shell:sh_binary.bzl". Signed-off-by: Marcin Radomski <dextero@google.com> * Update expected value in generated_code_debug_prints_correctly test In bitflags v2, the debug string representation of enum values is different than it was in v1: Blue -> Color(Blue) (empty) -> LongEnum(0x0) This change adjusts the expected test value. Signed-off-by: Marcin Radomski <dextero@google.com> * Fix tests build on Swift 5.8 grpc-swift 1.4.1 depends on swift-nio-ssl 2.14.0+ [1]. swift-nio-ssl 2.29.1 published on 2025-01-30, introduced some code [2] that uses a "switch expression syntax" supported since Swift 5.9 [3]. Attempts to compile it with Swift 5.8 cause build errors. swift-nio-ssl project doesn't seem to support Swift 5.8. A commit from 2024-10-29 removes a "deprecated reference to a Swift 5.8 pipeline" [4]. swift-nio-ssl 2.29.0 is the last version that can be compiled with Swift 5.8. This commit pins it to that exact version. [1]66e27d7e84/Package.swift (L33)[2]3cb4d5ad12 (diff-bc1db1321ff689c2819245dcce1a3080554f0fc13f81b8d326c97e7d42717c8fR54)[3] https://github.com/swiftlang/swift-evolution/blob/main/proposals/0380-if-switch-expressions.md [4]8a6b89d9a4--------- Signed-off-by: Marcin Radomski <dextero@google.com> Co-authored-by: Marcin Radomski <dextero@google.com>
This commit is contained in:
@@ -29,11 +29,9 @@ use flatbuffers::{
|
||||
use reflection_generated::reflection::{BaseType, Field, Object, Schema};
|
||||
|
||||
use core::mem::size_of;
|
||||
use escape_string::escape;
|
||||
use num::traits::float::Float;
|
||||
use num::traits::int::PrimInt;
|
||||
use num::traits::FromPrimitive;
|
||||
use stdint::uintmax_t;
|
||||
use num_traits::float::Float;
|
||||
use num_traits::int::PrimInt;
|
||||
use num_traits::FromPrimitive;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug, PartialEq)]
|
||||
@@ -541,7 +539,9 @@ pub unsafe fn set_string(
|
||||
|
||||
if delta != 0 {
|
||||
// Rounds the delta up to the nearest multiple of the maximum int size to keep the types after the insersion point aligned.
|
||||
let mask = (size_of::<uintmax_t>() - 1) as isize;
|
||||
// stdint crate defines intmax_t as an alias for c_long; use it directly to avoid extra
|
||||
// dependency.
|
||||
let mask = (size_of::<core::ffi::c_long>() - 1) as isize;
|
||||
let offset = (delta + mask) & !mask;
|
||||
let mut visited_vec = vec![false; buf.len()];
|
||||
|
||||
@@ -715,7 +715,8 @@ unsafe fn get_any_value_string(
|
||||
}
|
||||
let mut field_value = get_any_field_string(&table, &field, schema);
|
||||
if field.type_().base_type() == BaseType::String {
|
||||
field_value = escape(field_value.as_str()).to_string();
|
||||
// Escape the string
|
||||
field_value = format!("{:?}", field_value.as_str());
|
||||
}
|
||||
s += field.name();
|
||||
s += ": ";
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,9 +25,9 @@ use crate::{
|
||||
FlatbufferResult, ForwardsUOffset,
|
||||
};
|
||||
use flatbuffers::{Follow, Table, Vector, VerifierOptions};
|
||||
use num::traits::float::Float;
|
||||
use num::traits::int::PrimInt;
|
||||
use num::traits::FromPrimitive;
|
||||
use num_traits::float::Float;
|
||||
use num_traits::int::PrimInt;
|
||||
use num_traits::FromPrimitive;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug)]
|
||||
|
||||
Reference in New Issue
Block a user