effects/
effects.rs

1mod string {
2    #[yeter::query]
3    pub fn len(db: &yeter::Database, input: String) -> usize {
4        if input.is_empty() {
5            db.do_effect("Empty string");
6        }
7        input.len()
8    }
9}
10
11fn main() {
12    let db = yeter::Database::new();
13    let len1 = string::len(&db, "".into());
14    for msg in db.effect::<&'static str>() {
15        println!("EFFECT [1]: {}", msg);
16    }
17    let len2 = string::len(&db, "".into());
18    for msg in db.effect::<&'static str>() {
19        println!("EFFECT [2]: {}", msg);
20    }
21    let len3 = string::len(&db, "aaaa".into());
22    for msg in db.effect::<&'static str>() {
23        println!("EFFECT [3]: {}", msg);
24    }
25    assert_eq!(len1, len2);
26    assert_eq!(*len3, 4);
27}