From dbc8d000db30dcb085891c86921095803e2339e2 Mon Sep 17 00:00:00 2001 From: David Koloski Date: Sun, 15 Sep 2024 20:00:45 -0400 Subject: [PATCH] Update rkyv to 0.8.3 --- Cargo.toml | 4 +- benches/bench.rs | 126 ++++++++++++++++++------- src/bench_rkyv.rs | 122 +++++++----------------- src/datasets/log/mod.rs | 35 ------- src/datasets/mesh/mod.rs | 16 ---- src/datasets/minecraft_savedata/mod.rs | 47 +-------- src/datasets/mk48/mod.rs | 31 ------ 7 files changed, 131 insertions(+), 250 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index b283e36..ab43103 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,6 @@ borsh = { version = "=1.5.1", features = ["derive"], optional = true } # TODO: Unfork after bson adds support for pre-warmed serialization buffers # https://github.com/mongodb/bson-rust/pull/328 bson = { version = "=2.9.0", git = "https://github.com/djkoloski/bson-rust", branch = "add_into_vec", optional = true } -bytecheck = { version = "=0.6.12", optional = true } bytemuck = { version = "=1.16.1", optional = true } capnp = { version = "=0.19.6", optional = true } cbor4ii = { version = "=0.3.2", features = [ "use_std", "serde1" ], optional = true } @@ -79,7 +78,7 @@ pot = { version = "=3.0.0", optional = true } pprof = { version = "=0.13.0", features = ["flamegraph"], optional = true } prost = { version = "=0.12.6", optional = true } rand = "=0.8.5" -rkyv = { version = "=0.7.44", features = ["validation"], optional = true } +rkyv = { version = "=0.8.3", optional = true } rmp-serde = { version = "=1.3.0", optional = true } ron = { version = "=0.8.1", optional = true } serde = { version = "=1.0.204", features = ["derive"], optional = true } @@ -106,7 +105,6 @@ default = [ "bitcode", "borsh", "bson", - "bytecheck", "bytemuck", "capnp", "cbor4ii", diff --git a/benches/bench.rs b/benches/bench.rs index aea6e65..da28fd5 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -195,26 +195,41 @@ fn bench_log(c: &mut Criterion) { BENCH, c, &data, - |data| { - for log in data.logs.iter() { + |logs| { + for log in logs.logs.iter() { black_box(&log.address); black_box(log.code); black_box(log.size); } }, - |mut logs| { - use rust_serialization_benchmark::datasets::log::ArchivedAddress; - - for i in 0..logs.as_ref().logs.len() { - let mut log = logs.as_mut().logs_pin().index_pin(i); - *log.as_mut().address_pin() = ArchivedAddress { - x0: 0, - x1: 0, - x2: 0, - x3: 0, - }; - *log.as_mut().code_pin() = 200; - *log.as_mut().size_pin() = 0; + |log| { + use rkyv::{munge::munge, vec::ArchivedVec}; + use rust_serialization_benchmark::datasets::log::{ + ArchivedAddress, ArchivedLog, ArchivedLogs, + }; + + munge!(let ArchivedLogs { logs } = log); + let mut logs = ArchivedVec::as_slice_seal(logs); + for i in 0..logs.len() { + munge! { + let ArchivedLog { + address: ArchivedAddress { + mut x0, + mut x1, + mut x2, + mut x3, + }, + mut code, + mut size, + .. + } = logs.as_mut().index(i); + } + *x0 = 0; + *x1 = 0; + *x2 = 0; + *x3 = 0; + *code = 200.into(); + *size = 0.into(); } }, ); @@ -374,12 +389,29 @@ fn bench_mesh(c: &mut Criterion) { black_box(&triangle.normal); } }, - |mut mesh| { - for i in 0..mesh.as_ref().triangles.len() { - let mut triangle = mesh.as_mut().triangles_pin().index_pin(i); - triangle.normal.x = 0f32; - triangle.normal.y = 0f32; - triangle.normal.z = 0f32; + |mesh| { + use rkyv::{munge::munge, vec::ArchivedVec}; + use rust_serialization_benchmark::datasets::mesh::{ + ArchivedMesh, ArchivedTriangle, ArchivedVector3, + }; + + munge!(let ArchivedMesh { triangles } = mesh); + let mut triangles = ArchivedVec::as_slice_seal(triangles); + + for i in 0..triangles.len() { + munge! { + let ArchivedTriangle { + normal: ArchivedVector3 { + mut x, + mut y, + mut z, + }, + .. + } = triangles.as_mut().index(i); + } + *x = 0f32.into(); + *y = 0f32.into(); + *z = 0f32.into(); } }, ); @@ -534,20 +566,36 @@ fn bench_minecraft_savedata(c: &mut Criterion) { BENCH, c, &data, - |data| { - for player in data.players.iter() { + |players| { + for player in players.players.iter() { black_box(&player.game_type); } }, - |mut players| { + |players| { + use rkyv::{munge::munge, vec::ArchivedVec}; + use rust_serialization_benchmark::datasets::minecraft_savedata::{ + ArchivedPlayer, ArchivedPlayers, + }; + use rust_serialization_benchmark::datasets::minecraft_savedata::ArchivedGameType; - for i in 0..players.as_ref().players.len() { - let mut player = players.as_mut().players_pin().index_pin(i); - *player.as_mut().game_type_pin() = ArchivedGameType::Survival; - *player.as_mut().spawn_x_pin() = 0; - *player.as_mut().spawn_y_pin() = 0; - *player.as_mut().spawn_z_pin() = 0; + munge!(let ArchivedPlayers { players } = players); + let mut players = ArchivedVec::as_slice_seal(players); + + for i in 0..players.len() { + munge! { + let ArchivedPlayer { + mut game_type, + mut spawn_x, + mut spawn_y, + mut spawn_z, + .. + } = players.as_mut().index(i); + } + *game_type = ArchivedGameType::Survival; + *spawn_x = 0.into(); + *spawn_y = 0.into(); + *spawn_z = 0.into(); } }, ); @@ -703,15 +751,21 @@ fn bench_mk48(c: &mut Criterion) { BENCH, c, &data, - |data| { - for update in data.updates.iter() { + |updates| { + for update in updates.updates.iter() { black_box(update.score); } }, - |mut updates| { - for i in 0..updates.as_ref().updates.len() { - let mut update = updates.as_mut().updates_pin().index_pin(i); - *update.as_mut().score_pin() *= 2; + |updates| { + use rkyv::{munge::munge, vec::ArchivedVec}; + use rust_serialization_benchmark::datasets::mk48::{ArchivedUpdate, ArchivedUpdates}; + + munge!(let ArchivedUpdates { updates } = updates); + let mut updates = ArchivedVec::as_slice_seal(updates); + + for i in 0..updates.len() { + munge!(let ArchivedUpdate { mut score, .. } = updates.as_mut().index(i)); + *score *= 2; } }, ); diff --git a/src/bench_rkyv.rs b/src/bench_rkyv.rs index 3027e84..0511fd6 100644 --- a/src/bench_rkyv.rs +++ b/src/bench_rkyv.rs @@ -1,111 +1,73 @@ -use core::pin::Pin; +use core::mem::take; -use bytecheck::CheckBytes; use criterion::{black_box, Criterion}; use rkyv::{ - archived_value, archived_value_mut, check_archived_value, - ser::{ - serializers::{AlignedSerializer, BufferScratch, CompositeSerializer}, - Serializer, - }, - validation::validators::DefaultValidator, - AlignedVec, Archive, Deserialize, Infallible, Serialize, + access, access_unchecked, access_unchecked_mut, + api::high::{to_bytes_in, HighDeserializer, HighSerializer, HighValidator}, + bytecheck::CheckBytes, + deserialize, from_bytes, + rancor::Failure, + seal::Seal, + ser::allocator::ArenaHandle, + util::AlignedVec, + Archive, Deserialize, Serialize, }; -pub type BenchSerializer<'a> = CompositeSerializer< - AlignedSerializer<&'a mut AlignedVec>, - BufferScratch<&'a mut AlignedVec>, - Infallible, ->; +pub type BenchSerializer<'a> = HighSerializer<'a, AlignedVec, ArenaHandle<'a>, Failure>; +pub type BenchDeserializer = HighDeserializer; +pub type BenchValidator<'a> = HighValidator<'a, Failure>; pub fn bench(name: &'static str, c: &mut Criterion, data: &T, read: R, update: U) where T: Archive + for<'a> Serialize> + PartialEq, - T::Archived: for<'a> CheckBytes> + Deserialize, + T::Archived: for<'a> CheckBytes> + Deserialize, R: Fn(&T::Archived), - U: Fn(Pin<&mut T::Archived>), - ::Archived: for<'a> rkyv::CheckBytes>, + U: for<'a> Fn(Seal<'a, T::Archived>), + ::Archived: for<'a> CheckBytes>, { const BUFFER_LEN: usize = 10_000_000; - const SCRATCH_LEN: usize = 512_000; let mut group = c.benchmark_group(format!("{}/rkyv", name)); - let mut serialize_buffer = AlignedVec::with_capacity(BUFFER_LEN); - let mut serialize_scratch = AlignedVec::with_capacity(SCRATCH_LEN); - unsafe { - serialize_scratch.set_len(SCRATCH_LEN); - } + let mut buffer = AlignedVec::with_capacity(BUFFER_LEN); group.bench_function("serialize", |b| { b.iter(|| { - serialize_buffer.clear(); - - let mut serializer = CompositeSerializer::new( - AlignedSerializer::new(black_box(&mut serialize_buffer)), - BufferScratch::new(black_box(&mut serialize_scratch)), - Infallible, - ); - black_box(serializer.serialize_value(black_box(data)).unwrap()); + buffer.clear(); + buffer = black_box(to_bytes_in(black_box(data), black_box(take(&mut buffer))).unwrap()); }) }); - serialize_buffer.clear(); - let mut serializer = CompositeSerializer::new( - AlignedSerializer::new(&mut serialize_buffer), - BufferScratch::new(&mut serialize_scratch), - Infallible, - ); - let pos = serializer.serialize_value(data).unwrap(); - let deserialize_buffer = serializer.into_serializer().into_inner(); + buffer.clear(); + buffer = black_box(to_bytes_in(black_box(data), black_box(buffer)).unwrap()); group.bench_function("access (unvalidated)", |b| { - b.iter(|| { - black_box(unsafe { - archived_value::(black_box(deserialize_buffer.as_ref()), black_box(pos)) - }); - }) + b.iter(|| black_box(unsafe { access_unchecked::(black_box(buffer.as_ref())) })) }); group.bench_function("access (validated upfront with error)", |b| { - b.iter(|| { - black_box( - check_archived_value::(black_box(deserialize_buffer.as_ref()), black_box(pos)) - .unwrap(), - ); - }) + b.iter(|| black_box(access::(black_box(buffer.as_ref())).unwrap())) }); group.bench_function("read (unvalidated)", |b| { b.iter(|| { - unsafe { - read(archived_value::( - black_box(deserialize_buffer.as_ref()), - black_box(pos), - )) - }; - black_box(()); + black_box(unsafe { read(access_unchecked::(black_box(buffer.as_ref()))) }) }) }); group.bench_function("read (validated upfront with error)", |b| { b.iter(|| { - read( - check_archived_value::(black_box(deserialize_buffer.as_ref()), black_box(pos)) - .unwrap(), - ); - black_box(()); + black_box(read( + access::(black_box(buffer.as_ref())).unwrap(), + )) }) }); - let mut update_buffer = deserialize_buffer.clone(); - group.bench_function("update", |b| { + let mut update_buffer = buffer.clone(); + group.bench_function("update (unvalidated)", |b| { b.iter(|| { let mut value = unsafe { - archived_value_mut::( - black_box(Pin::new_unchecked(update_buffer.as_mut_slice())), - black_box(pos), - ) + access_unchecked_mut::(black_box(update_buffer.as_mut_slice())) }; update(value.as_mut()); black_box(value); @@ -114,33 +76,21 @@ where group.bench_function("deserialize (unvalidated)", |b| { b.iter(|| { - let value = unsafe { - archived_value::(black_box(deserialize_buffer.as_ref()), black_box(pos)) - }; - let deserialized: T = value.deserialize(&mut Infallible).unwrap(); - black_box(deserialized); + let value = unsafe { access_unchecked::(black_box(buffer.as_ref())) }; + black_box(deserialize(value).unwrap()) }) }); group.bench_function("deserialize (validated upfront with error)", |b| { b.iter(|| { - let value = - check_archived_value::(black_box(deserialize_buffer.as_ref()), black_box(pos)) - .unwrap(); - let deserialized: T = value.deserialize(&mut Infallible).unwrap(); - black_box(deserialized); + let value = access::(black_box(buffer.as_ref())).unwrap(); + black_box(deserialize(value).unwrap()) }) }); - crate::bench_size(name, "rkyv", deserialize_buffer); + crate::bench_size(name, "rkyv", &buffer); - assert!( - check_archived_value::(deserialize_buffer.as_ref(), pos) - .unwrap() - .deserialize(&mut Infallible) - .unwrap() - == *data - ); + assert!(from_bytes::(buffer.as_ref()).unwrap() == *data); group.finish(); } diff --git a/src/datasets/log/mod.rs b/src/datasets/log/mod.rs index e0aa71e..f6972a1 100644 --- a/src/datasets/log/mod.rs +++ b/src/datasets/log/mod.rs @@ -19,8 +19,6 @@ pub use log_fb::log as fb; #[cfg(feature = "nanoserde")] use nanoserde::{DeBin, SerBin}; use rand::Rng; -#[cfg(feature = "rkyv")] -use rkyv::Archived; #[cfg(feature = "wiring")] use wiring::prelude::{Unwiring, Wiring}; @@ -47,7 +45,6 @@ use crate::Generate; feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr(feature = "savefile", derive(savefile_derive::Savefile))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( @@ -163,7 +160,6 @@ impl alkahest::Pack
for Address { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( feature = "simd-json", @@ -188,25 +184,6 @@ pub struct Log { pub size: u64, } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedLog { - pub fn address_pin(self: Pin<&mut Self>) -> Pin<&mut ArchivedAddress> { - unsafe { self.map_unchecked_mut(|s| &mut s.address) } - } - - pub fn code_pin(self: Pin<&mut Self>) -> Pin<&mut u16> { - unsafe { self.map_unchecked_mut(|s| &mut s.code) } - } - - pub fn size_pin(self: Pin<&mut Self>) -> Pin<&mut u64> { - unsafe { self.map_unchecked_mut(|s| &mut s.size) } - } - } -}; - #[cfg(feature = "alkahest")] #[derive(alkahest::Schema)] pub struct LogSchema { @@ -390,7 +367,6 @@ impl alkahest::Pack for &'_ Log { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[cfg_attr( feature = "simd-json", @@ -409,17 +385,6 @@ pub struct Logs { pub logs: Vec, } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedLogs { - pub fn logs_pin(self: Pin<&mut Self>) -> Pin<&mut Archived>> { - unsafe { self.map_unchecked_mut(|s| &mut s.logs) } - } - } -}; - #[cfg(feature = "flatbuffers")] impl<'a> bench_flatbuffers::Serialize<'a> for Logs { type Target = fb::Logs<'a>; diff --git a/src/datasets/mesh/mod.rs b/src/datasets/mesh/mod.rs index 5c6e8f9..bd56e55 100644 --- a/src/datasets/mesh/mod.rs +++ b/src/datasets/mesh/mod.rs @@ -17,8 +17,6 @@ pub use mesh_fb::mesh as fb; #[cfg(feature = "nanoserde")] use nanoserde::{DeBin, SerBin}; use rand::Rng; -#[cfg(feature = "rkyv")] -use rkyv::Archived; #[cfg(feature = "wiring")] use wiring::prelude::{Unwiring, Wiring}; @@ -45,7 +43,6 @@ use crate::Generate; feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -151,7 +148,6 @@ impl alkahest::Pack for Vector3 { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -269,7 +265,6 @@ impl alkahest::Pack for &'_ Triangle { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -288,17 +283,6 @@ pub struct Mesh { pub triangles: Vec, } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedMesh { - pub fn triangles_pin(self: Pin<&mut Self>) -> Pin<&mut Archived>> { - unsafe { self.map_unchecked_mut(|s| &mut s.triangles) } - } - } -}; - #[cfg(feature = "flatbuffers")] impl<'a> bench_flatbuffers::Serialize<'a> for Mesh { type Target = fb::Mesh<'a>; diff --git a/src/datasets/minecraft_savedata/mod.rs b/src/datasets/minecraft_savedata/mod.rs index 3f14a98..cd5a78a 100644 --- a/src/datasets/minecraft_savedata/mod.rs +++ b/src/datasets/minecraft_savedata/mod.rs @@ -19,8 +19,7 @@ use minecraft_savedata_prost as pb; #[cfg(feature = "nanoserde")] use nanoserde::{DeBin, SerBin}; use rand::Rng; -#[cfg(feature = "rkyv")] -use rkyv::Archived; +use rkyv::traits::NoUndef; #[cfg(feature = "wiring")] use wiring::prelude::{Unwiring, Wiring}; @@ -47,7 +46,6 @@ use crate::{generate_vec, Generate}; feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -74,6 +72,9 @@ pub enum GameType { Spectator, } +#[cfg(feature = "rkyv")] +unsafe impl NoUndef for ArchivedGameType {} + impl Generate for GameType { fn generate(rand: &mut R) -> Self { match rand.gen_range(0..4) { @@ -165,7 +166,6 @@ impl alkahest::Pack for GameType { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -303,7 +303,6 @@ impl alkahest::Pack for &'_ Item { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -441,7 +440,6 @@ impl alkahest::Pack for Abilities { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -753,7 +751,6 @@ impl alkahest::Pack for &'_ Entity { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -982,7 +979,6 @@ impl alkahest::Pack for &'_ RecipeBook { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -1031,29 +1027,6 @@ pub struct Player { pub recipe_book: RecipeBook, } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedPlayer { - pub fn game_type_pin(self: Pin<&mut Self>) -> Pin<&mut ArchivedGameType> { - unsafe { self.map_unchecked_mut(|s| &mut s.game_type) } - } - - pub fn spawn_x_pin(self: Pin<&mut Self>) -> Pin<&mut i64> { - unsafe { self.map_unchecked_mut(|s| &mut s.spawn_x) } - } - - pub fn spawn_y_pin(self: Pin<&mut Self>) -> Pin<&mut i64> { - unsafe { self.map_unchecked_mut(|s| &mut s.spawn_y) } - } - - pub fn spawn_z_pin(self: Pin<&mut Self>) -> Pin<&mut i64> { - unsafe { self.map_unchecked_mut(|s| &mut s.spawn_z) } - } - } -}; - impl Generate for Player { fn generate(rng: &mut R) -> Self { const DIMENSIONS: [&str; 3] = ["overworld", "nether", "end"]; @@ -1475,7 +1448,6 @@ impl alkahest::Pack for &'_ Player { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -1494,17 +1466,6 @@ pub struct Players { pub players: Vec, } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedPlayers { - pub fn players_pin(self: Pin<&mut Self>) -> Pin<&mut Archived>> { - unsafe { self.map_unchecked_mut(|s| &mut s.players) } - } - } -}; - #[cfg(feature = "flatbuffers")] impl<'a> bench_flatbuffers::Serialize<'a> for Players { type Target = fb::Players<'a>; diff --git a/src/datasets/mk48/mod.rs b/src/datasets/mk48/mod.rs index 28769f8..8cca55c 100644 --- a/src/datasets/mk48/mod.rs +++ b/src/datasets/mk48/mod.rs @@ -21,8 +21,6 @@ use mk48_prost as pb; #[cfg(feature = "nanoserde")] use nanoserde::{DeBin, SerBin}; use rand::Rng; -#[cfg(feature = "rkyv")] -use rkyv::Archived; #[cfg(feature = "wiring")] use wiring::prelude::{Unwiring, Wiring}; @@ -49,7 +47,6 @@ use crate::{generate_vec, Generate}; feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -301,7 +298,6 @@ fn generate_velocity(rng: &mut impl Rng) -> i16 { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -433,7 +429,6 @@ impl alkahest::Pack for Transform { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -539,7 +534,6 @@ impl alkahest::Pack for Guidance { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -770,7 +764,6 @@ impl alkahest::Pack for &'_ Contact { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -914,7 +907,6 @@ impl alkahest::Pack for &'_ TerrainUpdate { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -957,17 +949,6 @@ impl Generate for Update { } } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedUpdate { - pub fn score_pin(self: Pin<&mut Self>) -> Pin<&mut u32> { - unsafe { self.map_unchecked_mut(|s| &mut s.score) } - } - } -}; - #[cfg(feature = "flatbuffers")] impl<'a> bench_flatbuffers::Serialize<'a> for Update { type Target = fb::Update<'a>; @@ -1087,7 +1068,6 @@ impl alkahest::Pack for &'_ Update { feature = "rkyv", derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize) )] -#[cfg_attr(feature = "rkyv", archive_attr(derive(bytecheck::CheckBytes)))] #[cfg_attr( feature = "scale", derive(parity_scale_codec_derive::Encode, parity_scale_codec_derive::Decode) @@ -1106,17 +1086,6 @@ pub struct Updates { pub updates: Vec, } -#[cfg(feature = "rkyv")] -const _: () = { - use core::pin::Pin; - - impl ArchivedUpdates { - pub fn updates_pin(self: Pin<&mut Self>) -> Pin<&mut Archived>> { - unsafe { self.map_unchecked_mut(|s| &mut s.updates) } - } - } -}; - #[cfg(feature = "flatbuffers")] impl<'a> bench_flatbuffers::Serialize<'a> for Updates { type Target = fb::Updates<'a>;