#string-interning #interning #compile-time #string

intern-str-codegen

在编译时生成 intern-str 图

3 个版本

0.1.2 2022 年 9 月 25 日
0.1.1 2022 年 9 月 25 日
0.1.0 2022 年 9 月 25 日

#1742开发工具

MIT/Apache

33KB
593

intern-str-codegen

Graph 转换为其 Rust 代码等效形式。

这允许在构建时生成一个 Graph,然后将其插入到二进制文件中。这使得在嵌入式系统中可以几乎不增加成本地使用大型图。

许可证

intern_str 许可证受以下之一

由您选择。


lib.rs:

Graph 转换为其 Rust 代码等效形式。

这允许在构建时生成一个 Graph,然后将其插入到二进制文件中。这使得在嵌入式系统中可以几乎不增加成本地使用大型图。

示例

use intern_str::{Graph, Segmentable};
use intern_str::builder::{Builder, Utf8Graph};
use intern_str_codegen::generate;
use std::{fs::File, io::{prelude::*, BufWriter}};

let mut builder = Builder::<_, Utf8Graph>::new();

builder.add("hello", 1).unwrap();
builder.add("world", 2).unwrap();

let mut buffer = Vec::new();
let graph = builder.build(&mut buffer);

// Convert to string.
let code = generate(
    &graph,
    "&'static str",
    "usize",
    |f, out| write!(f, "{}", out),
);

let mut out = BufWriter::new(File::create("graph.rs").unwrap());
writeln!(
    out,
    "const GRAPH: intern_str::Graph<'static, 'static, &'static str, usize> = {}",
    code,
)?;

依赖项