#expect-macro #proc-macro #automation #terminal #macro

macro rust-expect-macros

Procedural macros for the rust-expect terminal automation library

1 unstable release

Uses new Rust 2024

0.1.0 Jan 5, 2026

#768 in #automation


Used in rust-expect

MIT/Apache

26KB
490 lines

rust-expect-macros: Procedural macros for rust-expect

This crate provides compile-time macros for the rust-expect terminal automation library:

  • patterns! - Define pattern sets for expect operations
  • regex! - Compile-time validated regex patterns
  • dialog! - Define interactive dialog scripts
  • timeout! - Parse timeout duration specifications

Example: Pattern Matching

use rust_expect_macros::patterns;

let patterns = patterns! {
    "login:",
    "password:",
    regex(r"\$\s*$"),
};

Example: Dialog Script

use rust_expect_macros::dialog;

let script = dialog! {
    expect "login:";
    sendln "admin";
    expect "password:";
    sendln "secret";
    expect_re r"\$\s*$"
};

Example: Validated Regex

use rust_expect_macros::regex;

// Compile-time validated regex
let prompt = regex!(r"^\w+@\w+:\S+\$\s*$");

Example: Human-Readable Timeout

use rust_expect_macros::timeout;

let duration = timeout!(5 s);
let long_timeout = timeout!(2 m + 30 s);

rust-expect-macros

Procedural macros for the rust-expect terminal automation library.

Macros

patterns!

Create multiple patterns at once:

use rust_expect_macros::patterns;

let patterns = patterns![
    "login:",
    "password:",
    r"\$ $",
];

dialog!

Define dialog flows declaratively:

use rust_expect_macros::dialog;

let login_dialog = dialog! {
    expect "login: " => send "admin\n",
    expect "password: " => send "secret\n",
    expect "$ ",
};

regex!

Compile-time verified regex patterns:

use rust_expect_macros::regex;

let pattern = regex!(r"\d{3}-\d{4}");

timeout!

Human-readable duration syntax:

use rust_expect_macros::timeout;

let duration = timeout!(5 seconds);
let short = timeout!(500 ms);

License

Licensed under MIT or Apache-2.0.

Dependencies

~2–3.5MB
~62K SLoC