#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Token {
pub text: String,
pub offset_from: usize,
pub offset_to: usize,
pub position: u32,
}
impl Token {
pub fn new(
text: impl Into<String>,
offset_from: usize,
offset_to: usize,
position: u32,
) -> Self {
Self {
text: text.into(),
offset_from,
offset_to,
position,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn token_fields() {
let token = Token::new("hello", 0, 5, 0);
assert_eq!(token.text, "hello");
assert_eq!(token.offset_from, 0);
assert_eq!(token.offset_to, 5);
assert_eq!(token.position, 0);
}
#[test]
fn token_clone() {
let token = Token::new("world", 6, 11, 1);
let cloned = token.clone();
assert_eq!(token, cloned);
}
}