(
buf: &mut F,
elems: impl IntoIterator<Item = (impl AsRef<str>, T)>,
mut format_elem: impl FnMut(MapValueWriter<F>, T) -> Result<Nestable, E>,
)
| 1407 | } |
| 1408 | |
| 1409 | pub fn format_map<F, T, E>( |
| 1410 | buf: &mut F, |
| 1411 | elems: impl IntoIterator<Item = (impl AsRef<str>, T)>, |
| 1412 | mut format_elem: impl FnMut(MapValueWriter<F>, T) -> Result<Nestable, E>, |
| 1413 | ) -> Result<Nestable, E> |
| 1414 | where |
| 1415 | F: FormatBuffer, |
| 1416 | { |
| 1417 | buf.write_char('{'); |
| 1418 | let mut elems = elems.into_iter().peekable(); |
| 1419 | while let Some((key, value)) = elems.next() { |
| 1420 | // Map key values are always Strings, which always evaluate to |
| 1421 | // Nestable::MayNeedEscaping. |
| 1422 | let key_start = buf.len(); |
| 1423 | buf.write_str(key.as_ref()); |
| 1424 | escape_elem::<_, MapElementEscaper>(buf, key_start); |
| 1425 | |
| 1426 | buf.write_str("=>"); |
| 1427 | |
| 1428 | let value_start = buf.len(); |
| 1429 | if let Nestable::MayNeedEscaping = format_elem(MapValueWriter(buf), value)? { |
| 1430 | escape_elem::<_, MapElementEscaper>(buf, value_start); |
| 1431 | } |
| 1432 | |
| 1433 | if elems.peek().is_some() { |
| 1434 | buf.write_char(','); |
| 1435 | } |
| 1436 | } |
| 1437 | buf.write_char('}'); |
| 1438 | Ok(Nestable::Yes) |
| 1439 | } |
| 1440 | |
| 1441 | pub fn parse_range<'a, V, E>( |
| 1442 | s: &'a str, |
no test coverage detected