| Crates.io | fred-macros |
| lib.rs | fred-macros |
| version | 0.1.0 |
| created_at | 2024-09-03 17:10:04.986322+00 |
| updated_at | 2024-09-03 17:10:04.986322+00 |
| description | Procedural macros for the `fred` Redis client |
| homepage | https://github.com/aembke/fred-macros |
| repository | https://github.com/aembke/fred-macros |
| max_upload_size | |
| id | 1361868 |
| size | 16,722 |
Procedural macros that conditionally change or remove Send and Sync bounds.
extern crate fred_macros;
use fred_macros::rm_send_if;
use std::future::Future;
pub trait T1 {}
pub trait T2 {}
pub trait T3 {
/// Documentation tests.
#[rm_send_if(feature = "glommio")]
fn foo<A, B>(&self, _a: A, _b: B) -> impl Future<Output=()> + Send
where
A: T1 + Send,
B: T2 + Send,
{
async move { () }
}
}
This will expand to:
// ...
pub trait T3 {
/// Documentation tests.
#[cfg(feature = "glommio")]
fn foo<A, B>(&self, _a: A, _b: B) -> impl Future<Output=()>
where
A: T1,
B: T2,
{
async move { () }
}
/// Documentation tests.
#[cfg(not(feature = "glommio"))]
fn foo<A, B>(&self, _a: A, _b: B) -> impl Future<Output=()> + Send
where
A: T1 + Send,
B: T2 + Send,
{
async move { () }
}
}
extern crate fred_macros;
use fred_macros::rm_send_if;
use std::future::Future;
trait T1 {}
trait T2 {}
/// Test trait documentation.
#[rm_send_if(feature = "glommio")]
pub trait T3: Clone + Send + Sync {
/// Test fn documentation
fn bar<A, B>(&self, _a: A, _b: B) -> impl Future<Output=()> + Send
where
A: T1 + Send,
B: T2 + Send + Sync,
{
async move { () }
}
}
This will expand to:
// ...
#[cfg(feature = "glommio")]
pub trait T3: Clone {
/// Test fn documentation
fn bar<A, B>(&self, _a: A, _b: B) -> impl Future<Output=()>
where
A: T1,
B: T2,
{
async move { () }
}
}
#[cfg(not(feature = "glommio"))]
pub trait T3: Clone + Send + Sync {
/// Test fn documentation
fn bar<A, B>(&self, _a: A, _b: B) -> impl Future<Output=()> + Send
where
A: T1 + Send,
B: T2 + Send + Sync,
{
async move { () }
}
}