diff options
Diffstat (limited to 'src/poem/elements/verse.rs')
-rw-r--r-- | src/poem/elements/verse.rs | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/poem/elements/verse.rs b/src/poem/elements/verse.rs index 5694b55..a1ae65f 100644 --- a/src/poem/elements/verse.rs +++ b/src/poem/elements/verse.rs @@ -192,16 +192,16 @@ impl Verse { /// let stanza_success = Stanza::new(command_success); /// let stanza_fail = Stanza::new(command_fail); /// - /// stanza_success.spellcheck(bins) // -> true - /// stanza_fail.spellcheck(bins) // -> false + /// stanza_success.spellcheck(bins) // -> Some(i) + /// stanza_fail.spellcheck(bins) // -> None /// ``` - pub fn spellcheck(&self, bins: &Vec<String>) -> bool { + pub fn spellcheck(&self, bins: &Vec<String>) -> Option<usize> { // An empty verb (i.e. the empty string) cannot be a program, so // return false // Thanks to the parsing in Poem::read, however, it's // unlikely for this to happen if self.verb().is_empty() { - return false; + return None; } // Only search the $PATH if a full or relative path was not given, or @@ -209,17 +209,18 @@ impl Verse { if !Path::new(self.verb().as_str()).exists() { // Try to find a binary in our path with the same name as the verb // Searches in $PATH order - match bins - .iter() - .find(|bin| bin.split('/').last().unwrap() == self.verb()) - { - Some(_) => return true, - None => return false, + for (i, path) in bins.iter().enumerate() { + if path.split('/').last().unwrap() == self.verb() { + return Some(i); + } } + + // If it was not found, return None + return None; } - // Return true if the full path or relative path exists - true + // Return the length of bins if the full path or relative path exists + Some(bins.len()) } /// Run a command |