12 个版本

0.5.5 2024 年 5 月 28 日
0.5.4 2023 年 11 月 16 日
0.5.3 2023 年 9 月 22 日
0.5.2 2023 年 4 月 13 日
0.1.0 2020 年 11 月 12 日

108Rust 模式 中排名

Download history • Rust 包仓库 55553/week @ 2024-05-03 • Rust 包仓库 51578/week @ 2024-05-10 • Rust 包仓库 59272/week @ 2024-05-17 • Rust 包仓库 60014/week @ 2024-05-24 • Rust 包仓库 64215/week @ 2024-05-31 • Rust 包仓库 408922/week @ 2024-06-07 • Rust 包仓库 531508/week @ 2024-06-14 • Rust 包仓库 277678/week @ 2024-06-21 • Rust 包仓库 170974/week @ 2024-06-28 • Rust 包仓库 117456/week @ 2024-07-05 • Rust 包仓库 126082/week @ 2024-07-12 • Rust 包仓库 117329/week @ 2024-07-19 • Rust 包仓库 115533/week @ 2024-07-26 • Rust 包仓库 109126/week @ 2024-08-02 • Rust 包仓库 102952/week @ 2024-08-09 • Rust 包仓库 80828/week @ 2024-08-16 • Rust 包仓库

430,536 次每月下载
269 包(20 个直接)中使用

Unicode-3.0

65KB
1K SLoC

writeable crates.io

writeableICU4X 项目的实用工具包。

它包括 Writeable,这是一个核心特质,代表一个可以写入实现 std::fmt::Write 的 sink 的对象。它是 std::fmt::Display 的替代品,增加了指示要写入的字节数的函数。

Writeable 在两个方面改进了 std::fmt::Display

  1. 更高效,因为 sink 可以预先分配字节。
  2. 代码更少,因为格式化机制可以被短路。

示例

use std::fmt;
use writeable::assert_writeable_eq;
use writeable::LengthHint;
use writeable::Writeable;

struct WelcomeMessage<'s> {
    pub name: &'s str,
}

impl<'s> Writeable for WelcomeMessage<'s> {
    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
        sink.write_str("Hello, ")?;
        sink.write_str(self.name)?;
        sink.write_char('!')?;
        Ok(())
    }

    fn writeable_length_hint(&self) -> LengthHint {
        // "Hello, " + '!' + length of name
        LengthHint::exact(8 + self.name.len())
    }
}

let message = WelcomeMessage { name: "Alice" };
assert_writeable_eq!(&message, "Hello, Alice!");

// Types implementing `Writeable` are recommended to also implement `fmt::Display`.
// This can be simply done by redirecting to the `Writeable` implementation:
writeable::impl_display_with_writeable!(WelcomeMessage<'_>);

更多信息

有关开发、作者、贡献等更多信息,请访问 ICU4X 首页

依赖关系