llama_cpp_bindings/context/
llama_state_seq_flags.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2pub struct LlamaStateSeqFlags {
3 flags: u32,
4}
5
6impl LlamaStateSeqFlags {
7 pub const PARTIAL_ONLY: Self = Self { flags: 1 };
8
9 #[must_use]
10 pub const fn empty() -> Self {
11 Self { flags: 0 }
12 }
13
14 #[must_use]
15 pub const fn bits(&self) -> u32 {
16 self.flags
17 }
18
19 #[must_use]
20 pub const fn contains(&self, other: Self) -> bool {
21 (self.flags & other.flags) == other.flags
22 }
23}
24
25impl std::ops::BitOr for LlamaStateSeqFlags {
26 type Output = Self;
27
28 fn bitor(self, rhs: Self) -> Self {
29 Self {
30 flags: self.flags | rhs.flags,
31 }
32 }
33}
34
35#[cfg(test)]
36mod tests {
37 use super::LlamaStateSeqFlags;
38
39 #[test]
40 fn empty_has_no_bits_set() {
41 assert_eq!(LlamaStateSeqFlags::empty().bits(), 0);
42 }
43
44 #[test]
45 fn partial_only_has_bit_one() {
46 assert_eq!(LlamaStateSeqFlags::PARTIAL_ONLY.bits(), 1);
47 }
48
49 #[test]
50 fn bitor_combines_flags() {
51 let combined = LlamaStateSeqFlags::empty() | LlamaStateSeqFlags::PARTIAL_ONLY;
52
53 assert_eq!(combined.bits(), 1);
54 }
55
56 #[test]
57 fn contains_detects_set_flag() {
58 let flags = LlamaStateSeqFlags::PARTIAL_ONLY;
59
60 assert!(flags.contains(LlamaStateSeqFlags::PARTIAL_ONLY));
61 }
62
63 #[test]
64 fn empty_does_not_contain_partial_only() {
65 let flags = LlamaStateSeqFlags::empty();
66
67 assert!(!flags.contains(LlamaStateSeqFlags::PARTIAL_ONLY));
68 }
69}