Writes a [`Range`] to `buf`.
(
buf: &mut F,
r: &Range<V>,
mut format_elem: impl FnMut(RangeElementWriter<F>, Option<&V>) -> Result<Nestable, E>,
)
| 1532 | |
| 1533 | /// Writes a [`Range`] to `buf`. |
| 1534 | pub fn format_range<F, V, E>( |
| 1535 | buf: &mut F, |
| 1536 | r: &Range<V>, |
| 1537 | mut format_elem: impl FnMut(RangeElementWriter<F>, Option<&V>) -> Result<Nestable, E>, |
| 1538 | ) -> Result<Nestable, E> |
| 1539 | where |
| 1540 | F: FormatBuffer, |
| 1541 | { |
| 1542 | let range = match &r.inner { |
| 1543 | None => { |
| 1544 | buf.write_str("empty"); |
| 1545 | return Ok(Nestable::MayNeedEscaping); |
| 1546 | } |
| 1547 | Some(i) => i, |
| 1548 | }; |
| 1549 | |
| 1550 | if range.lower.inclusive { |
| 1551 | buf.write_char('['); |
| 1552 | } else { |
| 1553 | buf.write_char('('); |
| 1554 | } |
| 1555 | |
| 1556 | let start = buf.len(); |
| 1557 | if let Nestable::MayNeedEscaping = |
| 1558 | format_elem(RangeElementWriter(buf), range.lower.bound.as_ref())? |
| 1559 | { |
| 1560 | escape_elem::<_, ListElementEscaper>(buf, start); |
| 1561 | } |
| 1562 | |
| 1563 | buf.write_char(','); |
| 1564 | |
| 1565 | let start = buf.len(); |
| 1566 | if let Nestable::MayNeedEscaping = |
| 1567 | format_elem(RangeElementWriter(buf), range.upper.bound.as_ref())? |
| 1568 | { |
| 1569 | escape_elem::<_, ListElementEscaper>(buf, start); |
| 1570 | } |
| 1571 | |
| 1572 | if range.upper.inclusive { |
| 1573 | buf.write_char(']'); |
| 1574 | } else { |
| 1575 | buf.write_char(')'); |
| 1576 | } |
| 1577 | |
| 1578 | Ok(Nestable::MayNeedEscaping) |
| 1579 | } |
| 1580 | |
| 1581 | /// A helper for `format_range` that formats a single record element. |
| 1582 | #[derive(Debug)] |
no test coverage detected