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 日 |
108 在 Rust 模式 中排名
430,536 次每月下载
在 269 个 包(20 个直接)中使用
65KB
1K SLoC
writeable
writeable
是 ICU4X
项目的实用工具包。
它包括 Writeable
,这是一个核心特质,代表一个可以写入实现 std::fmt::Write
的 sink 的对象。它是 std::fmt::Display
的替代品,增加了指示要写入的字节数的函数。
Writeable
在两个方面改进了 std::fmt::Display
- 更高效,因为 sink 可以预先分配字节。
- 代码更少,因为格式化机制可以被短路。
示例
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 首页
。