Ensures that a combination of [`Keyword`] and [`ClearableValue`] uses a [`ClearableValue::Single`] and parses the value as a specific type. # Errors Returns an error if - `value` cannot be parsed as a specific type, - or `value` is a [`ClearableValue::Array`].
(
keyword: &Keyword,
value: &'a ClearableValue,
mut parser: P,
)
| 172 | /// |
| 173 | /// Returns an error if |
| 174 | /// |
| 175 | /// - `value` cannot be parsed as a specific type, |
| 176 | /// - or `value` is a [`ClearableValue::Array`]. |
| 177 | fn parse_clearable_value<'a, O, P: Parser<&'a str, O, ErrMode<ContextError>>>( |
| 178 | keyword: &Keyword, |
| 179 | value: &'a ClearableValue, |
| 180 | mut parser: P, |
| 181 | ) -> Result<Override<O>, BridgeError> { |
| 182 | // Make sure we have no array |
| 183 | let value = ensure_single_clearable_value(keyword, value)?; |
| 184 | |
| 185 | // If the value is `None`, it indicates a cleared value. |
| 186 | let Some(value) = value else { |
| 187 | return Ok(Override::Clear); |
| 188 | }; |
| 189 | |
| 190 | let parsed_value = parser.parse(value).map_err(|err| (keyword.clone(), err))?; |
| 191 | |
| 192 | Ok(Override::Yes { |
| 193 | value: parsed_value, |
| 194 | }) |
| 195 | } |
no test coverage detected