| 655 | |
| 656 | impl<W: Write> VertexBuffer for Writer<W> { |
| 657 | fn output_line<E, F>(&mut self, node: GraphNode<NodeId>, get_contents: F) -> Result<(), E> |
| 658 | where |
| 659 | E: From<std::io::Error>, |
| 660 | F: FnOnce(&mut [u8]) -> Result<(), E>, |
| 661 | { |
| 662 | // Resize buffer to fit span content |
| 663 | let len = node.len(); |
| 664 | self.buffer.resize(len, 0); |
| 665 | |
| 666 | // Get content from change |
| 667 | get_contents(&mut self.buffer)?; |
| 668 | |
| 669 | // Write content |
| 670 | self.writer.write_all(&self.buffer)?; |
| 671 | |
| 672 | // Track newline state |
| 673 | if !self.buffer.is_empty() { |
| 674 | self.at_newline = self.buffer.ends_with(b"\n"); |
| 675 | } |
| 676 | |
| 677 | Ok(()) |
| 678 | } |
| 679 | |
| 680 | fn output_conflict_marker( |
| 681 | &mut self, |