#rkyv #impl-block #macro #foo #archive #methods #archived-foo

rkyv_impl

rkyv 用户提供宏,以便在单个 impl 块中实现 FooArchivedFoo 的方法

4 个版本

0.2.2 2023年8月3日
0.2.1 2023年8月3日
0.2.0 2023年8月2日
0.1.0 2023年8月1日

#1160编码

Download history 691/week @ 2024-03-14 584/week @ 2024-03-21 960/week @ 2024-03-28 374/week @ 2024-04-04 548/week @ 2024-04-11 969/week @ 2024-04-18 61/week @ 2024-04-25 422/week @ 2024-05-02 345/week @ 2024-05-09 569/week @ 2024-05-16 483/week @ 2024-05-23 1285/week @ 2024-05-30 771/week @ 2024-06-06 929/week @ 2024-06-13 211/week @ 2024-06-20 635/week @ 2024-06-27

2,851 每月下载量

MIT/Apache

24KB
532

rkyv_impl

Crates.io Docs.rs

在一个 impl 块中实现 FooArchivedFoo 的方法。

use rkyv::Archive;
use rkyv_impl::*;
use std::iter::Sum;

#[derive(Archive)]
struct Foo<T> {
    elements: Vec<T>
}

#[archive_impl(transform_bounds(T))]
impl<T> Foo<T> {
    // Notice that the where clause is transformed so that
    // `T` is replaced with `T::Archived` in the generated `impl`.
    #[archive_method(transform_bounds(T))]
    fn sum<S>(&self) -> S
    where
        T: Clone,
        S: Sum<T>
    {
        self.elements.iter().cloned().sum()
    }
}

fn use_generated_method(foo: &ArchivedFoo<u32>) {
    // Call the generated method!
    let _ = foo.sum::<u32>();
}

许可证:MIT/Apache-2.0


lib.rs:

Crates.io Docs.rs

在一个 impl 块中实现 FooArchivedFoo 的方法。

use rkyv::Archive;
use rkyv_impl::*;
use std::iter::Sum;

#[derive(Archive)]
struct Foo<T> {
    elements: Vec<T>
}

#[archive_impl(transform_bounds(T))]
impl<T> Foo<T> {
    // Notice that the where clause is transformed so that
    // `T` is replaced with `T::Archived` in the generated `impl`.
    #[archive_method(transform_bounds(T))]
    fn sum<S>(&self) -> S
    where
        T: Clone,
        S: Sum<T>
    {
        self.elements.iter().cloned().sum()
    }
}

fn use_generated_method(foo: &ArchivedFoo<u32>) {
    // Call the generated method!
    let _ = foo.sum::<u32>();
}

依赖项

~285–740KB
~18K SLoC