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 55553/week @ 2024-05-03 51578/week @ 2024-05-10 59272/week @ 2024-05-17 60014/week @ 2024-05-24 64215/week @ 2024-05-31 408922/week @ 2024-06-07 531508/week @ 2024-06-14 277678/week @ 2024-06-21 170974/week @ 2024-06-28 117456/week @ 2024-07-05 126082/week @ 2024-07-12 117329/week @ 2024-07-19 115533/week @ 2024-07-26 109126/week @ 2024-08-02 102952/week @ 2024-08-09 80828/week @ 2024-08-16

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 首页

依赖关系