Skip to content

Commit baea38c

Browse files
committed
reintroduce LlamaTokenDataArray::new and ::from_iter
1 parent b888e98 commit baea38c

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

llama-cpp-2/src/token/data_array.rs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,41 @@ pub struct LlamaTokenDataArray {
1010
/// is the data sorted?
1111
pub sorted: bool,
1212
}
13+
14+
impl LlamaTokenDataArray {
15+
/// Create a new `LlamaTokenDataArray` from a vector and weather or not the data is sorted.
16+
///
17+
/// ```
18+
/// # use llama_cpp_2::token::data::LlamaTokenData;
19+
/// # use llama_cpp_2::token::data_array::LlamaTokenDataArray;
20+
/// # use llama_cpp_2::token::LlamaToken;
21+
/// let array = LlamaTokenDataArray::new(vec![
22+
/// LlamaTokenData::new(LlamaToken(0), 0.0, 0.0),
23+
/// LlamaTokenData::new(LlamaToken(1), 0.1, 0.1)
24+
/// ], false);
25+
/// assert_eq!(array.data.len(), 2);
26+
/// assert_eq!(array.sorted, false);
27+
/// ```
28+
#[must_use]
29+
pub fn new(data: Vec<LlamaTokenData>, sorted: bool) -> Self {
30+
Self { data, sorted }
31+
}
32+
33+
/// Create a new `LlamaTokenDataArray` from an iterator and weather or not the data is sorted.
34+
/// ```
35+
/// # use llama_cpp_2::token::data::LlamaTokenData;
36+
/// # use llama_cpp_2::token::data_array::LlamaTokenDataArray;
37+
/// # use llama_cpp_2::token::LlamaToken;
38+
/// let array = LlamaTokenDataArray::from_iter([
39+
/// LlamaTokenData::new(LlamaToken(0), 0.0, 0.0),
40+
/// LlamaTokenData::new(LlamaToken(1), 0.1, 0.1)
41+
/// ], false);
42+
/// assert_eq!(array.data.len(), 2);
43+
/// assert_eq!(array.sorted, false);
44+
pub fn from_iter<T>(data: T, sorted: bool) -> LlamaTokenDataArray
45+
where
46+
T: IntoIterator<Item = LlamaTokenData>,
47+
{
48+
Self::new(data.into_iter().collect(), sorted)
49+
}
50+
}

0 commit comments

Comments
 (0)