| Crates.io | trait-variant |
| lib.rs | trait-variant |
| version | 0.1.2 |
| created_at | 2023-12-15 00:47:44.920635+00 |
| updated_at | 2024-03-18 22:43:08.58141+00 |
| description | Utilities for working with impl traits in Rust |
| homepage | |
| repository | https://github.com/rust-lang/impl-trait-utils |
| max_upload_size | |
| id | 1070540 |
| size | 19,536 |
Utilities for working with impl Traits in Rust.
trait_varianttrait_variant generates a specialized version of a base trait that uses async fn and/or -> impl Trait.
For example, if you want a Sendable version of your trait, you'd write:
#[trait_variant::make(IntFactory: Send)]
trait LocalIntFactory {
async fn make(&self) -> i32;
fn stream(&self) -> impl Iterator<Item = i32>;
fn call(&self) -> u32;
}
The trait_variant::make would generate an additional trait called IntFactory:
use core::future::Future;
trait IntFactory: Send {
fn make(&self) -> impl Future<Output = i32> + Send;
fn stream(&self) -> impl Iterator<Item = i32> + Send;
fn call(&self) -> u32;
}
Implementers can choose to implement either LocalIntFactory or IntFactory as appropriate.
For more details, see the docs for trait_variant::make.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.