From 1d831b4c4e730a7a7a4556e6c71aecc88d73d9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?cel=20=F0=9F=8C=B8?= Date: Wed, 4 Dec 2024 02:36:05 +0000 Subject: [PATCH] add write function and remove todo Sink impl --- src/writer.rs | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/src/writer.rs b/src/writer.rs index 25e19fb..5f9f3fd 100644 --- a/src/writer.rs +++ b/src/writer.rs @@ -1,4 +1,4 @@ -use std::{collections::HashSet, str::FromStr}; +use std::{collections::HashSet, pin::pin, str::FromStr}; use async_recursion::async_recursion; use futures::Sink; @@ -6,7 +6,7 @@ use tokio::io::{AsyncWrite, AsyncWriteExt}; use crate::{ declaration::{Declaration, VersionInfo}, - element::{escape_str, Content, Element, IntoElement, Name, NamespaceDeclaration}, + element::{escape_str, Content, Element, IntoContent, IntoElement, Name, NamespaceDeclaration}, error::Error, xml::{self, composers::Composer, parsers_complete::Parser, ETag, XMLDecl}, Result, XMLNS_NS, XML_NS, @@ -79,6 +79,11 @@ impl Writer { Ok(()) } + pub async fn write(&mut self, into_content: &impl IntoContent) -> Result<()> { + let content = into_content.into_content(); + Ok(self.write_content(&content).await?) + } + #[async_recursion] pub async fn write_element(&mut self, element: &Element) -> Result<()> { if element.content.is_empty() { @@ -357,35 +362,6 @@ impl Writer { } } -impl> Sink for Writer { - type Error = Error; - - fn poll_ready( - self: std::pin::Pin<&mut Self>, - cx: &mut std::task::Context<'_>, - ) -> std::task::Poll> { - todo!() - } - - fn start_send(self: std::pin::Pin<&mut Self>, item: E) -> Result<()> { - todo!() - } - - fn poll_flush( - self: std::pin::Pin<&mut Self>, - cx: &mut std::task::Context<'_>, - ) -> std::task::Poll> { - todo!() - } - - fn poll_close( - self: std::pin::Pin<&mut Self>, - cx: &mut std::task::Context<'_>, - ) -> std::task::Poll> { - todo!() - } -} - #[cfg(test)] mod test { use crate::{