anony 0.5.3

Anonymous struct
Documentation

anony

Provides various constructs for anonymous types.

Macros

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

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

let x = r#struct! {
    name: "discreaminant".to_owned(),
    // Move the `items` variable into the struct
    items,
};

assert_eq!(x.name, "discreaminant");
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!("discreaminant".to_owned(), items);

assert_eq!(x.0, "discreaminant");
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/tree/master/examples/expansions

Features

  • serde: Derives Serialize for anonymous structs and tuples. The serde crate must be included in your dependencies.
  • future: Enables Future anonymous types, such as join!.

Nightly

Add this to your dependencies:

anony = { git = "https://github.com/discreaminant2809/anony.git", branch = "nightly" }