pub struct Word { /* private fields */ }Expand description
Represents a word - a sequence of letters
Implementations§
Source§impl Word
impl Word
Sourcepub fn from_letters(letters: Vec<Letter>) -> Self
pub fn from_letters(letters: Vec<Letter>) -> Self
Create a word from a vector of letters
Examples found in repository?
examples/all_eqtests_custom_kb.rs (line 224)
208 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
209 self.stats.increment_nb_query();
210 self.stats.add_nb_letter(query.input_word.len());
211 self.stats.increment_nb_submitted_query();
212 self.stats.add_nb_submitted_letter(query.input_word.len());
213
214 self.state = ATMState::Idle;
215 let mut outputs = Vec::new();
216
217 for input_letter in query.input_word.letters() {
218 let command = input_letter.symbols();
219 let (next_state, response) = self.process_input(command.as_str(), self.state);
220 self.state = next_state;
221 outputs.push(Letter::new(response));
222 }
223
224 query.set_result(Word::from_letters(outputs));
225 Ok(())
226 }More examples
examples/vending_machine.rs (line 94)
75 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
76 self.stats.increment_nb_query();
77 self.stats.add_nb_letter(query.input_word.len());
78 self.stats.increment_nb_submitted_query();
79 self.stats.add_nb_submitted_letter(query.input_word.len());
80
81 // Reset to initial state for each query
82 self.state = VendingState::Idle;
83
84 let mut outputs = Vec::new();
85 for input_letter in query.input_word.letters() {
86 let command_string = input_letter.symbols();
87 let command = command_string.as_str();
88
89 let (next, resp) = self.process_input(command, self.state);
90 self.state = next;
91 outputs.push(Letter::new(resp));
92 }
93
94 query.set_result(Word::from_letters(outputs));
95 Ok(())
96 }examples/custom_kb.rs (line 115)
94 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
95 self.stats.increment_nb_query();
96 self.stats.add_nb_letter(query.input_word.len());
97 self.stats.increment_nb_submitted_query();
98 self.stats.add_nb_submitted_letter(query.input_word.len());
99 // Reset to initial state for each query
100 self.state = ATMState::Idle;
101
102 // let mut state = self.state.lock().unwrap();
103 let mut outputs = Vec::new();
104
105 for input_letter in query.input_word.letters() {
106 // Extract command from letter name (format: "Letter('x')")
107 let symbol = input_letter.symbols();
108 let command = symbol.as_str();
109
110 let (next_state, response) = self.process_input(command, self.state);
111 self.state = next_state;
112 outputs.push(Letter::new(response));
113 }
114
115 query.set_result(Word::from_letters(outputs));
116 Ok(())
117 }examples/benchmark.rs (line 111)
89 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
90 self.stats.increment_nb_query();
91 self.stats.add_nb_letter(query.input_word.len());
92 self.stats.increment_nb_submitted_query();
93 self.stats.add_nb_submitted_letter(query.input_word.len());
94
95 self.current_state = "s0".to_string();
96 let mut output_letters = Vec::new();
97
98 for input_letter in query.input_word.letters() {
99 let input = input_letter.symbols();
100 let key = (self.current_state.clone(), input);
101 let (output, next_state) = self
102 .transitions
103 .get(&key)
104 .cloned()
105 .ok_or_else(|| format!("No transition for ({}, {})", key.0, key.1))?;
106
107 output_letters.push(Letter::new(output));
108 self.current_state = next_state;
109 }
110
111 query.set_result(Word::from_letters(output_letters));
112 Ok(())
113 }examples/random_walk_eq.rs (line 120)
98 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
99 self.stats.increment_nb_query();
100 self.stats.add_nb_letter(query.input_word.len());
101 self.stats.increment_nb_submitted_query();
102 self.stats.add_nb_submitted_letter(query.input_word.len());
103
104 self.current_state = "s0".to_string();
105 let mut output_letters = Vec::new();
106
107 for input_letter in query.input_word.letters() {
108 let input = input_letter.symbols();
109 let key = (self.current_state.clone(), input);
110 let (output, next_state) = self
111 .transitions
112 .get(&key)
113 .cloned()
114 .ok_or_else(|| format!("No transition for ({}, {})", key.0, key.1))?;
115
116 output_letters.push(Letter::new(output));
117 self.current_state = next_state;
118 }
119
120 query.set_result(Word::from_letters(output_letters));
121 Ok(())
122 }Sourcepub fn letters(&self) -> &[Letter]
pub fn letters(&self) -> &[Letter]
Get the letters in this word
Examples found in repository?
examples/all_eqtests_custom_kb.rs (line 217)
208 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
209 self.stats.increment_nb_query();
210 self.stats.add_nb_letter(query.input_word.len());
211 self.stats.increment_nb_submitted_query();
212 self.stats.add_nb_submitted_letter(query.input_word.len());
213
214 self.state = ATMState::Idle;
215 let mut outputs = Vec::new();
216
217 for input_letter in query.input_word.letters() {
218 let command = input_letter.symbols();
219 let (next_state, response) = self.process_input(command.as_str(), self.state);
220 self.state = next_state;
221 outputs.push(Letter::new(response));
222 }
223
224 query.set_result(Word::from_letters(outputs));
225 Ok(())
226 }More examples
examples/vending_machine.rs (line 85)
75 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
76 self.stats.increment_nb_query();
77 self.stats.add_nb_letter(query.input_word.len());
78 self.stats.increment_nb_submitted_query();
79 self.stats.add_nb_submitted_letter(query.input_word.len());
80
81 // Reset to initial state for each query
82 self.state = VendingState::Idle;
83
84 let mut outputs = Vec::new();
85 for input_letter in query.input_word.letters() {
86 let command_string = input_letter.symbols();
87 let command = command_string.as_str();
88
89 let (next, resp) = self.process_input(command, self.state);
90 self.state = next;
91 outputs.push(Letter::new(resp));
92 }
93
94 query.set_result(Word::from_letters(outputs));
95 Ok(())
96 }examples/custom_kb.rs (line 105)
94 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
95 self.stats.increment_nb_query();
96 self.stats.add_nb_letter(query.input_word.len());
97 self.stats.increment_nb_submitted_query();
98 self.stats.add_nb_submitted_letter(query.input_word.len());
99 // Reset to initial state for each query
100 self.state = ATMState::Idle;
101
102 // let mut state = self.state.lock().unwrap();
103 let mut outputs = Vec::new();
104
105 for input_letter in query.input_word.letters() {
106 // Extract command from letter name (format: "Letter('x')")
107 let symbol = input_letter.symbols();
108 let command = symbol.as_str();
109
110 let (next_state, response) = self.process_input(command, self.state);
111 self.state = next_state;
112 outputs.push(Letter::new(response));
113 }
114
115 query.set_result(Word::from_letters(outputs));
116 Ok(())
117 }examples/benchmark.rs (line 98)
89 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
90 self.stats.increment_nb_query();
91 self.stats.add_nb_letter(query.input_word.len());
92 self.stats.increment_nb_submitted_query();
93 self.stats.add_nb_submitted_letter(query.input_word.len());
94
95 self.current_state = "s0".to_string();
96 let mut output_letters = Vec::new();
97
98 for input_letter in query.input_word.letters() {
99 let input = input_letter.symbols();
100 let key = (self.current_state.clone(), input);
101 let (output, next_state) = self
102 .transitions
103 .get(&key)
104 .cloned()
105 .ok_or_else(|| format!("No transition for ({}, {})", key.0, key.1))?;
106
107 output_letters.push(Letter::new(output));
108 self.current_state = next_state;
109 }
110
111 query.set_result(Word::from_letters(output_letters));
112 Ok(())
113 }examples/random_walk_eq.rs (line 107)
98 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
99 self.stats.increment_nb_query();
100 self.stats.add_nb_letter(query.input_word.len());
101 self.stats.increment_nb_submitted_query();
102 self.stats.add_nb_submitted_letter(query.input_word.len());
103
104 self.current_state = "s0".to_string();
105 let mut output_letters = Vec::new();
106
107 for input_letter in query.input_word.letters() {
108 let input = input_letter.symbols();
109 let key = (self.current_state.clone(), input);
110 let (output, next_state) = self
111 .transitions
112 .get(&key)
113 .cloned()
114 .ok_or_else(|| format!("No transition for ({}, {})", key.0, key.1))?;
115
116 output_letters.push(Letter::new(output));
117 self.current_state = next_state;
118 }
119
120 query.set_result(Word::from_letters(output_letters));
121 Ok(())
122 }Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Get the length of this word
Examples found in repository?
examples/all_eqtests_custom_kb.rs (line 210)
208 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
209 self.stats.increment_nb_query();
210 self.stats.add_nb_letter(query.input_word.len());
211 self.stats.increment_nb_submitted_query();
212 self.stats.add_nb_submitted_letter(query.input_word.len());
213
214 self.state = ATMState::Idle;
215 let mut outputs = Vec::new();
216
217 for input_letter in query.input_word.letters() {
218 let command = input_letter.symbols();
219 let (next_state, response) = self.process_input(command.as_str(), self.state);
220 self.state = next_state;
221 outputs.push(Letter::new(response));
222 }
223
224 query.set_result(Word::from_letters(outputs));
225 Ok(())
226 }More examples
examples/vending_machine.rs (line 77)
75 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
76 self.stats.increment_nb_query();
77 self.stats.add_nb_letter(query.input_word.len());
78 self.stats.increment_nb_submitted_query();
79 self.stats.add_nb_submitted_letter(query.input_word.len());
80
81 // Reset to initial state for each query
82 self.state = VendingState::Idle;
83
84 let mut outputs = Vec::new();
85 for input_letter in query.input_word.letters() {
86 let command_string = input_letter.symbols();
87 let command = command_string.as_str();
88
89 let (next, resp) = self.process_input(command, self.state);
90 self.state = next;
91 outputs.push(Letter::new(resp));
92 }
93
94 query.set_result(Word::from_letters(outputs));
95 Ok(())
96 }examples/custom_kb.rs (line 96)
94 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
95 self.stats.increment_nb_query();
96 self.stats.add_nb_letter(query.input_word.len());
97 self.stats.increment_nb_submitted_query();
98 self.stats.add_nb_submitted_letter(query.input_word.len());
99 // Reset to initial state for each query
100 self.state = ATMState::Idle;
101
102 // let mut state = self.state.lock().unwrap();
103 let mut outputs = Vec::new();
104
105 for input_letter in query.input_word.letters() {
106 // Extract command from letter name (format: "Letter('x')")
107 let symbol = input_letter.symbols();
108 let command = symbol.as_str();
109
110 let (next_state, response) = self.process_input(command, self.state);
111 self.state = next_state;
112 outputs.push(Letter::new(response));
113 }
114
115 query.set_result(Word::from_letters(outputs));
116 Ok(())
117 }examples/benchmark.rs (line 91)
89 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
90 self.stats.increment_nb_query();
91 self.stats.add_nb_letter(query.input_word.len());
92 self.stats.increment_nb_submitted_query();
93 self.stats.add_nb_submitted_letter(query.input_word.len());
94
95 self.current_state = "s0".to_string();
96 let mut output_letters = Vec::new();
97
98 for input_letter in query.input_word.letters() {
99 let input = input_letter.symbols();
100 let key = (self.current_state.clone(), input);
101 let (output, next_state) = self
102 .transitions
103 .get(&key)
104 .cloned()
105 .ok_or_else(|| format!("No transition for ({}, {})", key.0, key.1))?;
106
107 output_letters.push(Letter::new(output));
108 self.current_state = next_state;
109 }
110
111 query.set_result(Word::from_letters(output_letters));
112 Ok(())
113 }examples/random_walk_eq.rs (line 100)
98 fn resolve_query(&mut self, query: &mut OutputQuery) -> Result<(), String> {
99 self.stats.increment_nb_query();
100 self.stats.add_nb_letter(query.input_word.len());
101 self.stats.increment_nb_submitted_query();
102 self.stats.add_nb_submitted_letter(query.input_word.len());
103
104 self.current_state = "s0".to_string();
105 let mut output_letters = Vec::new();
106
107 for input_letter in query.input_word.letters() {
108 let input = input_letter.symbols();
109 let key = (self.current_state.clone(), input);
110 let (output, next_state) = self
111 .transitions
112 .get(&key)
113 .cloned()
114 .ok_or_else(|| format!("No transition for ({}, {})", key.0, key.1))?;
115
116 output_letters.push(Letter::new(output));
117 self.current_state = next_state;
118 }
119
120 query.set_result(Word::from_letters(output_letters));
121 Ok(())
122 }Sourcepub fn last_letter(&self) -> Option<&Letter>
pub fn last_letter(&self) -> Option<&Letter>
Get the last letter
Sourcepub fn append_letter(self, letter: Letter) -> Self
pub fn append_letter(self, letter: Letter) -> Self
Append a letter to this word
Sourcepub fn concatenate(&self, other: &Word) -> Word
pub fn concatenate(&self, other: &Word) -> Word
Concatenate two words
Sourcepub fn concatenate_letter(&self, letter: &Letter) -> Word
pub fn concatenate_letter(&self, letter: &Letter) -> Word
Concatenate with a single letter (optimized)
Trait Implementations§
impl Eq for Word
Auto Trait Implementations§
impl Freeze for Word
impl RefUnwindSafe for Word
impl Send for Word
impl Sync for Word
impl Unpin for Word
impl UnsafeUnpin for Word
impl UnwindSafe for Word
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more