llama_cpp_bindings/model/
grammar_trigger.rs1use crate::token::LlamaToken;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum GrammarTriggerType {
6 Token = 0,
8 Word = 1,
10 Pattern = 2,
12 PatternFull = 3,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq)]
18pub struct GrammarTrigger {
19 pub trigger_type: GrammarTriggerType,
21 pub value: String,
23 pub token: Option<LlamaToken>,
25}
26
27#[cfg(test)]
28mod tests {
29 use super::GrammarTrigger;
30 use super::GrammarTriggerType;
31 use crate::token::LlamaToken;
32
33 #[test]
34 fn token_type_has_token() {
35 let trigger = GrammarTrigger {
36 trigger_type: GrammarTriggerType::Token,
37 value: String::from("test_token"),
38 token: Some(LlamaToken(42)),
39 };
40
41 assert!(trigger.token.is_some());
42 }
43
44 #[test]
45 fn non_token_type_has_no_token() {
46 let trigger = GrammarTrigger {
47 trigger_type: GrammarTriggerType::Word,
48 value: String::from("test_word"),
49 token: None,
50 };
51
52 assert!(trigger.token.is_none());
53 }
54}