thymeleaf 0.1.0-beta.1

A framework-neutral Thymeleaf-compatible dynamic template engine for Rust
use std::io;

/// Java `java.io.Writer` 的 UTF-16 输出适配合同。
///
/// Thymeleaf 内部以 Java `char` 代码单元工作,不能直接退化为 Rust UTF-8
/// `std::io::Write`,否则孤立代理项及字符计数会改变。宿主适配器负责决定最终编码
/// 或保存 UTF-16,并通过 `io::Result` 映射 Java `IOException`。
/// 对应 Java 语义:Rust 侧内部类型(Java 无直接对应对象)。
pub trait TemplateWriter: Send {
    /// 写出完整 UTF-16 代码单元切片。
    ///
    /// # 参数
    ///
    /// - `characters`:按 Java `Writer#write(char[])` 语义写出的代码单元。
    ///
    /// # 错误
    ///
    /// 底层输出失败时返回 I/O 错误。
    fn write_utf16(&mut self, characters: &[u16]) -> io::Result<()>;

    /// 刷新底层输出。
    ///
    /// 对应 Java: `Writer#flush()`。不需要缓冲的实现可沿用默认空操作。
    fn flush(&mut self) -> io::Result<()> {
        Ok(())
    }

    /// 关闭底层输出。
    ///
    /// 对应 Java: `Writer#close()`。默认实现先刷新,拥有外部资源的适配器可以覆盖。
    fn close(&mut self) -> io::Result<()> {
        self.flush()
    }
}