[][src]Trait rkyv::ArchiveCopy

pub unsafe trait ArchiveCopy: Archive<Archived = Self> + Copy { }

A trait that indicates that some Archive type can be copied directly to an archive without additional processing.

Types that implement ArchiveCopy are not guaranteed to have archive called on them to archive their value.

You can derive an implementation of ArchiveCopy by adding #[archive(copy)] to the struct or enum. Types that implement ArchiveCopy must also implement Copy.

ArchiveCopy must be manually implemented even if a type implements Archive and Copy because some types may transform their data when writing to an archive.

Examples

use rkyv::{Aligned, Archive, ArchiveBuffer, archived_value, Write};

#[derive(Archive, Clone, Copy, Debug, PartialEq)]
#[archive(copy)]
struct Vector4<T>(T, T, T, T);

let mut writer = ArchiveBuffer::new(Aligned([0u8; 256]));
let value = Vector4(1f32, 2f32, 3f32, 4f32);
let pos = writer.archive(&value)
    .expect("failed to archive Vector4");
let buf = writer.into_inner();
let archived_value = unsafe { archived_value::<Vector4<f32>>(buf.as_ref(), pos) };
assert_eq!(&value, archived_value);

Implementations on Foreign Types

impl ArchiveCopy for RangeFull[src]

impl ArchiveCopy for ()[src]

impl ArchiveCopy for bool[src]

impl ArchiveCopy for i8[src]

impl ArchiveCopy for i16[src]

impl ArchiveCopy for i32[src]

impl ArchiveCopy for i64[src]

impl ArchiveCopy for i128[src]

impl ArchiveCopy for u8[src]

impl ArchiveCopy for u16[src]

impl ArchiveCopy for u32[src]

impl ArchiveCopy for u64[src]

impl ArchiveCopy for u128[src]

impl ArchiveCopy for f32[src]

impl ArchiveCopy for f64[src]

impl ArchiveCopy for char[src]

impl ArchiveCopy for NonZeroI8[src]

impl ArchiveCopy for NonZeroI16[src]

impl ArchiveCopy for NonZeroI32[src]

impl ArchiveCopy for NonZeroI64[src]

impl ArchiveCopy for NonZeroI128[src]

impl ArchiveCopy for NonZeroU8[src]

impl ArchiveCopy for NonZeroU16[src]

impl ArchiveCopy for NonZeroU32[src]

impl ArchiveCopy for NonZeroU64[src]

impl ArchiveCopy for NonZeroU128[src]

impl<T11: ArchiveCopy, T10: ArchiveCopy, T9: ArchiveCopy, T8: ArchiveCopy, T7: ArchiveCopy, T6: ArchiveCopy, T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T11, T10, T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)[src]

impl<T10: ArchiveCopy, T9: ArchiveCopy, T8: ArchiveCopy, T7: ArchiveCopy, T6: ArchiveCopy, T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T10, T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)[src]

impl<T9: ArchiveCopy, T8: ArchiveCopy, T7: ArchiveCopy, T6: ArchiveCopy, T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)[src]

impl<T8: ArchiveCopy, T7: ArchiveCopy, T6: ArchiveCopy, T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T8, T7, T6, T5, T4, T3, T2, T1, T0)[src]

impl<T7: ArchiveCopy, T6: ArchiveCopy, T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T7, T6, T5, T4, T3, T2, T1, T0)[src]

impl<T6: ArchiveCopy, T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T6, T5, T4, T3, T2, T1, T0)[src]

impl<T5: ArchiveCopy, T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T5, T4, T3, T2, T1, T0)[src]

impl<T4: ArchiveCopy, T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T4, T3, T2, T1, T0)[src]

impl<T3: ArchiveCopy, T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T3, T2, T1, T0)[src]

impl<T2: ArchiveCopy, T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T2, T1, T0)[src]

impl<T1: ArchiveCopy, T0: ArchiveCopy> ArchiveCopy for (T1, T0)[src]

impl<T0: ArchiveCopy> ArchiveCopy for (T0,)[src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 31][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 30][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 29][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 28][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 27][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 26][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 25][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 24][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 23][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 22][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 21][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 20][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 19][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 18][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 17][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 16][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 15][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 14][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 13][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 12][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 11][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 10][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 9][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 8][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 7][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 6][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 5][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 4][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 3][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 2][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 1][src]

impl<T: ArchiveCopy> ArchiveCopy for [T; 0][src]

Loading content...

Implementors

Loading content...