(&mut self)
| 33 | } |
| 34 | |
| 35 | pub(crate) fn next_flag(&mut self) -> Result<String, String> { |
| 36 | self.pending_value = None; |
| 37 | let arg = self |
| 38 | .next() |
| 39 | .ok_or_else(|| "Expected option but reached end of arguments".to_string())?; |
| 40 | if let Some((flag, value)) = arg.split_once('=') { |
| 41 | if !flag.starts_with('-') { |
| 42 | return Err(format!("Expected option, got '{arg}'")); |
| 43 | } |
| 44 | self.pending_value = Some(value.to_string()); |
| 45 | return Ok(flag.to_string()); |
| 46 | } |
| 47 | if arg.starts_with('-') { |
| 48 | Ok(arg) |
| 49 | } else { |
| 50 | Err(format!("Expected option, got '{arg}'")) |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | pub(crate) fn value_for(&mut self, flag: &str) -> Result<String, String> { |
| 55 | if let Some(value) = self.pending_value.take() { |
no test coverage detected