Crate anony

source ·
Expand description

Provides various anonymous type constructs

§Macros

  • struct!: creates an instance of an anonymous struct.
use anony::r#struct;

let items = vec![1, 3, 5];

let x = r#struct! {
    color: "Red".to_owned(),
    // move the `items` variable to the struct
    items
};

assert_eq!(x.color, "Red");
assert_eq!(x.items, [1, 3, 5]);
  • tuple!: creates an instance of an anonymous tuple.
use anony::tuple;

let items = vec![1, 3, 5];

let x = tuple!("Red".to_owned(), items);

assert_eq!(x.0, "Red");
assert_eq!(x.1, [1, 3, 5]);
use anony::join;

assert_eq!(join!(async { 2 }, async { "123" }).await, (2, "123"));
use anony::try_join;

assert_eq!(try_join!(async { Some(2) }, async { Some("123") }).await, Some((2, "123")));
assert_eq!(try_join!(async { Some(2) }, async { None::<i32> }).await, None);

§Example Macro Expansions

https://github.com/discreaminant2809/anony/blob/master/examples/expansions.rs

§Features

  • serde: derives Serialize for anonymous structs and tuples. serde crate must exist in your crate.
  • future: enables Future anonymous types, such as join!.

§Disclaimer

All macros in this crate are 100% hygienic.

Macros§

  • joinfuture
    Returns a future that “joins” multiple futures that will be completed concurrently.
  • Returns a future that “joins” multiple futures that will be completed concurrently, using cycling polling strategy.
  • Creates an instance of an anonymous struct.
  • try_joinfuture
    Returns a future that “joins” multiple futures that will be completed concurrently. May short-circuit.
  • Returns a future that “joins” multiple futures that will be completed concurrently, using cycling polling strategy. May short-circuit.
  • Create an instance of an anonymous tuple.