Skip to main content

demo_offline_matching/
demo_offline_matching.rs

1use phenomenological_rendezvous::matching::{MatchingConfig, Matcher};
2use phenomenological_rendezvous::srt::pattern_from_srt;
3use phenomenological_rendezvous::{SemanticRendezvousToken, SubmodalityPattern};
4
5fn main() {
6    let srt = SemanticRendezvousToken::from_hex(
7        "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f",
8    )
9    .expect("valid hex");
10    let target = pattern_from_srt(&srt, b"oracle-state");
11
12    let measured_stream = vec![
13        SubmodalityPattern::zeros(),
14        SubmodalityPattern {
15            brightness: 0.52,
16            volume: 0.47,
17            ..SubmodalityPattern::zeros()
18        },
19        SubmodalityPattern {
20            brightness: 0.51,
21            volume: 0.48,
22            ..SubmodalityPattern::zeros()
23        },
24        SubmodalityPattern {
25            brightness: 0.5,
26            volume: 0.49,
27            ..SubmodalityPattern::zeros()
28        },
29    ];
30
31    let mut matcher = Matcher::new(MatchingConfig::new(0.2, 2));
32
33    for (index, measured) in measured_stream.iter().enumerate() {
34        let matched = matcher.observe(measured, &target);
35        if matched {
36            println!("rendezvous triggered at index {index}");
37        } else {
38            println!("no match at index {index}");
39        }
40    }
41}