Skip to main content

llama_cpp_bindings/
token.rs

1//! Safe wrappers around `llama_token_data` and `llama_token_data_array`.
2
3use std::fmt::Debug;
4use std::fmt::Display;
5
6pub mod data;
7pub mod data_array;
8pub mod logit_bias;
9
10/// A safe wrapper for `llama_token`.
11#[repr(transparent)]
12#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
13pub struct LlamaToken(pub llama_cpp_bindings_sys::llama_token);
14
15impl Display for LlamaToken {
16    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
17        write!(f, "{}", self.0)
18    }
19}
20
21impl LlamaToken {
22    /// Create a new `LlamaToken` from a i32.
23    ///
24    /// ```
25    /// # use llama_cpp_bindings::token::LlamaToken;
26    /// let token = LlamaToken::new(0);
27    /// assert_eq!(token, LlamaToken(0));
28    /// ```
29    #[must_use]
30    pub fn new(token_id: i32) -> Self {
31        Self(token_id)
32    }
33}