[][src]Trait rkyv::Unarchive

pub trait Unarchive<T: Archive<Archived = Self> + ?Sized>: Sized {
    pub fn unarchive(&self) -> T;
}

Converts a type back from its archived form.

This can be derived with Unarchive.

Examples

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

#[derive(Archive, Debug, PartialEq, Unarchive)]
struct Test {
    int: u8,
    string: String,
    option: Option<Vec<i32>>,
}

let mut writer = ArchiveBuffer::new(Aligned([0u8; 256]));
let value = Test {
    int: 42,
    string: "hello world".to_string(),
    option: Some(vec![1, 2, 3, 4]),
};
let pos = writer.archive(&value)
    .expect("failed to archive test");
let buf = writer.into_inner();
let archived = unsafe { archived_value::<Test>(buf.as_ref(), pos) };

let unarchived = archived.unarchive();
assert_eq!(value, unarchived);

Required methods

pub fn unarchive(&self) -> T[src]

Loading content...

Implementations on Foreign Types

impl Unarchive<RangeFull> for RangeFull[src]

impl Unarchive<()> for () where
    (): Copy
[src]

impl Unarchive<bool> for bool where
    bool: Copy
[src]

impl Unarchive<i8> for i8 where
    i8: Copy
[src]

impl Unarchive<i16> for i16 where
    i16: Copy
[src]

impl Unarchive<i32> for i32 where
    i32: Copy
[src]

impl Unarchive<i64> for i64 where
    i64: Copy
[src]

impl Unarchive<i128> for i128 where
    i128: Copy
[src]

impl Unarchive<u8> for u8 where
    u8: Copy
[src]

impl Unarchive<u16> for u16 where
    u16: Copy
[src]

impl Unarchive<u32> for u32 where
    u32: Copy
[src]

impl Unarchive<u64> for u64 where
    u64: Copy
[src]

impl Unarchive<u128> for u128 where
    u128: Copy
[src]

impl Unarchive<f32> for f32 where
    f32: Copy
[src]

impl Unarchive<f64> for f64 where
    f64: Copy
[src]

impl Unarchive<char> for char where
    char: Copy
[src]

impl Unarchive<NonZeroI8> for NonZeroI8 where
    NonZeroI8: Copy
[src]

impl Unarchive<NonZeroI16> for NonZeroI16 where
    NonZeroI16: Copy
[src]

impl Unarchive<NonZeroI32> for NonZeroI32 where
    NonZeroI32: Copy
[src]

impl Unarchive<NonZeroI64> for NonZeroI64 where
    NonZeroI64: Copy
[src]

impl Unarchive<NonZeroI128> for NonZeroI128 where
    NonZeroI128: Copy
[src]

impl Unarchive<NonZeroU8> for NonZeroU8 where
    NonZeroU8: Copy
[src]

impl Unarchive<NonZeroU16> for NonZeroU16 where
    NonZeroU16: Copy
[src]

impl Unarchive<NonZeroU32> for NonZeroU32 where
    NonZeroU32: Copy
[src]

impl Unarchive<NonZeroU64> for NonZeroU64 where
    NonZeroU64: Copy
[src]

impl Unarchive<NonZeroU128> for NonZeroU128 where
    NonZeroU128: Copy
[src]

impl Unarchive<AtomicBool> for AtomicBool[src]

impl Unarchive<AtomicI8> for AtomicI8[src]

impl Unarchive<AtomicI16> for AtomicI16[src]

impl Unarchive<AtomicI32> for AtomicI32[src]

impl Unarchive<AtomicI64> for AtomicI64[src]

impl Unarchive<AtomicU8> for AtomicU8[src]

impl Unarchive<AtomicU16> for AtomicU16[src]

impl Unarchive<AtomicU32> for AtomicU32[src]

impl Unarchive<AtomicU64> for AtomicU64[src]

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

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

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

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

impl<T7: Archive, T6: Archive, T5: Archive, T4: Archive, T3: Archive, T2: Archive, T1: Archive, T0: Archive> Unarchive<(T7, T6, T5, T4, T3, T2, T1, T0)> for (T7::Archived, T6::Archived, T5::Archived, T4::Archived, T3::Archived, T2::Archived, T1::Archived, T0::Archived) where
    T7::Archived: Unarchive<T7>,
    T6::Archived: Unarchive<T6>,
    T5::Archived: Unarchive<T5>,
    T4::Archived: Unarchive<T4>,
    T3::Archived: Unarchive<T3>,
    T2::Archived: Unarchive<T2>,
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T6: Archive, T5: Archive, T4: Archive, T3: Archive, T2: Archive, T1: Archive, T0: Archive> Unarchive<(T6, T5, T4, T3, T2, T1, T0)> for (T6::Archived, T5::Archived, T4::Archived, T3::Archived, T2::Archived, T1::Archived, T0::Archived) where
    T6::Archived: Unarchive<T6>,
    T5::Archived: Unarchive<T5>,
    T4::Archived: Unarchive<T4>,
    T3::Archived: Unarchive<T3>,
    T2::Archived: Unarchive<T2>,
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T5: Archive, T4: Archive, T3: Archive, T2: Archive, T1: Archive, T0: Archive> Unarchive<(T5, T4, T3, T2, T1, T0)> for (T5::Archived, T4::Archived, T3::Archived, T2::Archived, T1::Archived, T0::Archived) where
    T5::Archived: Unarchive<T5>,
    T4::Archived: Unarchive<T4>,
    T3::Archived: Unarchive<T3>,
    T2::Archived: Unarchive<T2>,
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T4: Archive, T3: Archive, T2: Archive, T1: Archive, T0: Archive> Unarchive<(T4, T3, T2, T1, T0)> for (T4::Archived, T3::Archived, T2::Archived, T1::Archived, T0::Archived) where
    T4::Archived: Unarchive<T4>,
    T3::Archived: Unarchive<T3>,
    T2::Archived: Unarchive<T2>,
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T3: Archive, T2: Archive, T1: Archive, T0: Archive> Unarchive<(T3, T2, T1, T0)> for (T3::Archived, T2::Archived, T1::Archived, T0::Archived) where
    T3::Archived: Unarchive<T3>,
    T2::Archived: Unarchive<T2>,
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T2: Archive, T1: Archive, T0: Archive> Unarchive<(T2, T1, T0)> for (T2::Archived, T1::Archived, T0::Archived) where
    T2::Archived: Unarchive<T2>,
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T1: Archive, T0: Archive> Unarchive<(T1, T0)> for (T1::Archived, T0::Archived) where
    T1::Archived: Unarchive<T1>,
    T0::Archived: Unarchive<T0>, 
[src]

impl<T0: Archive> Unarchive<(T0,)> for (T0::Archived,) where
    T0::Archived: Unarchive<T0>, 
[src]

impl<T: Archive> Unarchive<[T; 31]> for [T::Archived; 31] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 30]> for [T::Archived; 30] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 29]> for [T::Archived; 29] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 28]> for [T::Archived; 28] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 27]> for [T::Archived; 27] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 26]> for [T::Archived; 26] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 25]> for [T::Archived; 25] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 24]> for [T::Archived; 24] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 23]> for [T::Archived; 23] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 22]> for [T::Archived; 22] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 21]> for [T::Archived; 21] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 20]> for [T::Archived; 20] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 19]> for [T::Archived; 19] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 18]> for [T::Archived; 18] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 17]> for [T::Archived; 17] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 16]> for [T::Archived; 16] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 15]> for [T::Archived; 15] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 14]> for [T::Archived; 14] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 13]> for [T::Archived; 13] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 12]> for [T::Archived; 12] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 11]> for [T::Archived; 11] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 10]> for [T::Archived; 10] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 9]> for [T::Archived; 9] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 8]> for [T::Archived; 8] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 7]> for [T::Archived; 7] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 6]> for [T::Archived; 6] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 5]> for [T::Archived; 5] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 4]> for [T::Archived; 4] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 3]> for [T::Archived; 3] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 2]> for [T::Archived; 2] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 1]> for [T::Archived; 1] where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<[T; 0]> for [T::Archived; 0] where
    T::Archived: Unarchive<T>, 
[src]

Loading content...

Implementors

impl Unarchive<String> for Archived<String>[src]

impl<K: Archive + Hash + Eq, V: Archive> Unarchive<HashMap<K, V, RandomState>> for Archived<HashMap<K, V>> where
    K::Archived: Unarchive<K> + Hash + Eq,
    V::Archived: Unarchive<V>, 
[src]

impl<T: Archive> Unarchive<Option<T>> for Archived<Option<T>> where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<Vec<T, Global>> for Archived<Vec<T>> where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<Range<T>> for Archived<Range<T>> where
    T::Archived: Unarchive<T>, 
[src]

impl<T: Archive> Unarchive<RangeInclusive<T>> for Archived<RangeInclusive<T>> where
    T::Archived: Unarchive<T>, 
[src]

impl<T: ArchiveRef + ?Sized> Unarchive<Box<T, Global>> for Archived<Box<T>> where
    Reference<T>: UnarchiveRef<T>, 
[src]

Loading content...