use tripfuse::OnceFuse;
#[derive(PartialEq, Eq)]
struct OtpCode(String);
fn send_otp() -> OnceFuse<OtpCode> {
let code = OtpCode("123456".to_string());
OnceFuse::new(code)
}
fn verify_otp(fuse: &mut OnceFuse<OtpCode>, user_input: &str) -> bool {
match fuse.try_use() {
Ok(actual) => actual.0 == user_input,
Err(_) => false, }
}
fn main() {
let mut otp = send_otp();
assert!(verify_otp(&mut otp, "123456")); let ve = verify_otp(&mut otp, "123");
assert_eq!(ve, false);
}