From b80ad7e4398a5f3a5bcab76636d0b5f2c1cf8862 Mon Sep 17 00:00:00 2001 From: jean-airoldie <25088801+jean-airoldie@users.noreply.github.com> Date: Fri, 7 Jun 2019 17:06:21 -0400 Subject: [PATCH] [rust] Use read_scalar_at where possible (#5385) This slightly improves readability. --- rust/flatbuffers/src/builder.rs | 4 ++-- rust/flatbuffers/src/vector.rs | 8 ++++---- rust/flatbuffers/src/vtable_writer.rs | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/flatbuffers/src/builder.rs b/rust/flatbuffers/src/builder.rs index 47301352e..5d2a87129 100644 --- a/rust/flatbuffers/src/builder.rs +++ b/rust/flatbuffers/src/builder.rs @@ -21,7 +21,7 @@ use std::marker::PhantomData; use std::ptr::write_bytes; use std::slice::from_raw_parts; -use endian_scalar::{read_scalar, emplace_scalar}; +use endian_scalar::{read_scalar_at, emplace_scalar}; use primitives::*; use push::{Push, PushAlignment}; use table::Table; @@ -459,7 +459,7 @@ impl<'fbb> FlatBufferBuilder<'fbb> { { let n = self.head + self.used_space() - object_revloc_to_vtable.value() as usize; - let saw = read_scalar::(&self.owned_buf[n..n + SIZE_SOFFSET]); + let saw = read_scalar_at::(&self.owned_buf, n); debug_assert_eq!(saw, 0xF0F0F0F0); emplace_scalar::(&mut self.owned_buf[n..n + SIZE_SOFFSET], vt_use as SOffsetT - object_revloc_to_vtable.value() as SOffsetT); diff --git a/rust/flatbuffers/src/vector.rs b/rust/flatbuffers/src/vector.rs index 397089a66..2e6cd6e85 100644 --- a/rust/flatbuffers/src/vector.rs +++ b/rust/flatbuffers/src/vector.rs @@ -21,7 +21,7 @@ use std::str::from_utf8_unchecked; #[cfg(target_endian = "little")] use endian_scalar::EndianScalar; -use endian_scalar::read_scalar; +use endian_scalar::{read_scalar, read_scalar_at}; use follow::Follow; use primitives::*; @@ -61,7 +61,7 @@ impl<'a, T: SafeSliceAccess + 'a> Vector<'a, T> { let loc = self.1; let sz = size_of::(); debug_assert!(sz > 0); - let len = read_scalar::(&buf[loc..loc + SIZE_UOFFSET]) as usize; + let len = read_scalar_at::(&buf, loc) as usize; let data_buf = &buf[loc + SIZE_UOFFSET..loc + SIZE_UOFFSET + len * sz]; let ptr = data_buf.as_ptr() as *const T; let s: &'a [T] = unsafe { from_raw_parts(ptr, len) }; @@ -100,7 +100,7 @@ pub fn follow_cast_ref<'a, T: Sized + 'a>(buf: &'a [u8], loc: usize) -> &'a T { impl<'a> Follow<'a> for &'a str { type Inner = &'a str; fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { - let len = read_scalar::(&buf[loc..loc + SIZE_UOFFSET]) as usize; + let len = read_scalar_at::(&buf, loc) as usize; let slice = &buf[loc + SIZE_UOFFSET..loc + SIZE_UOFFSET + len]; let s = unsafe { from_utf8_unchecked(slice) }; s @@ -111,7 +111,7 @@ impl<'a> Follow<'a> for &'a str { fn follow_slice_helper(buf: &[u8], loc: usize) -> &[T] { let sz = size_of::(); debug_assert!(sz > 0); - let len = read_scalar::(&buf[loc..loc + SIZE_UOFFSET]) as usize; + let len = read_scalar_at::(&buf, loc) as usize; let data_buf = &buf[loc + SIZE_UOFFSET..loc + SIZE_UOFFSET + len * sz]; let ptr = data_buf.as_ptr() as *const T; let s: &[T] = unsafe { from_raw_parts(ptr, len) }; diff --git a/rust/flatbuffers/src/vtable_writer.rs b/rust/flatbuffers/src/vtable_writer.rs index 119f794cd..401ed925d 100644 --- a/rust/flatbuffers/src/vtable_writer.rs +++ b/rust/flatbuffers/src/vtable_writer.rs @@ -16,7 +16,7 @@ use std::ptr::write_bytes; -use endian_scalar::{emplace_scalar, read_scalar}; +use endian_scalar::{emplace_scalar, read_scalar_at}; use primitives::*; /// VTableWriter compartmentalizes actions needed to create a vtable. @@ -57,7 +57,7 @@ impl<'a> VTableWriter<'a> { #[inline(always)] pub fn get_field_offset(&self, vtable_offset: VOffsetT) -> VOffsetT { let idx = vtable_offset as usize; - read_scalar::(&self.buf[idx..idx + SIZE_VOFFSET]) + read_scalar_at::(&self.buf, idx) } /// Writes an object field offset into the vtable.