1 unstable release
Uses new Rust 2024
| 0.1.0 | Jan 5, 2026 |
|---|
#768 in #automation
Used in rust-expect
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 operationsregex!- Compile-time validated regex patternsdialog!- Define interactive dialog scriptstimeout!- 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