| Crates.io | rkyv_impl |
| lib.rs | rkyv_impl |
| version | 0.2.2 |
| created_at | 2023-08-01 21:11:27.382492+00 |
| updated_at | 2023-08-03 05:17:57.66753+00 |
| description | Macro for `rkyv` users to implement methods on `Foo` and `ArchivedFoo` in a single `impl` block. |
| homepage | https://github.com/bonsairobo/rkyv_impl |
| repository | https://github.com/bonsairobo/rkyv_impl |
| max_upload_size | |
| id | 932213 |
| size | 24,983 |
Implement methods for Foo and ArchivedFoo in a single impl block.
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>();
}
License: MIT/Apache-2.0