glossa-shared

Crates.ioglossa-shared
lib.rsglossa-shared
version0.0.8
created_at2025-04-04 23:25:25.225432+00
updated_at2025-05-26 07:40:44.811525+00
descriptionShared Data structures for glossa-codegen
homepage
repositoryhttps://github.com/2moe/glossa
max_upload_size
id1621015
size64,794
Moe (2moe)

documentation

README

glossa-shared

glossa-shared.crate

Documentation Apache-2 licensed

Language/语言
Table of Contents

Design Goals

  • Provide data types for code generated by glossa-codegen
  • Decode(deserialize) bincode files generated by glossa-codegen

Features

Q: Which features do I need to enable? A: This depends on the type of code generated by glossa-codegen:

Codegen Method Required glossa-shared Feature
.output_phf() ["phf"]
.output_bincode() ["std", "decode"]
.output_match_fn() No need to import glossa-shared crate

Data Types

PHF Types

Type Description
PhfL10nOrderedMap Return type of functions generated by .output_phf()
PhfL10nAllInOneMap Return type of functions generated by .output_phf_all_in_one()
PhfTupleKey Tuple struct (MapName, Key)
Key type for maps from .output_phf()
PhfTripleKey Tuple struct (Language, MapName, Key)
Key type for maps from .output_phf_all_in_one()

Map

NonDSL: Regular|Highlight|RegularAndHighlight

  • L10nFlattenMap
    • <(MapName, Key), Value>
    • output_bincode(NonDSL) => {language}.bincode => Decode => L10nFlattenMap
  • L10nMaps
    • <Language, L10nFlattenMap>
    • output_bincode_all_in_one(NonDSL) => all.bincode => Decode => L10nMaps
  • L10nDSLMap
    • <MapName, Resolver>
    • output_bincode(DSL) => {language}.bincode => Decode => L10nDSLMap
  • DSLMaps
    • <Language, L10nDSLMap>
    • output_bincode_all_in_one(DSL) => all.bincode => Decode => DSLMaps

Decode bincode

  • decode::slice does not require "std" feature
  • decode::file requires "std"

decode::slice

  • decode_slice()
    • decode_single_data_to_map()
    • output_bincode(NonDSL) => {language}.bincode => Read => &[u8] => decode_single_data_to_map(&[u8]) => <(MapName, Key), Value>
    • decode_to_maps()
      • output_bincode_all_in_one(NonDSL) => all.bincode => Read => &[u8] => decode_to_maps(&[u8]) => <Language, L10nFlattenMap>
    • decode_single_data_to_dsl_map()
      • output_bincode(DSL) => {language}.bincode => Read => &[u8] => decode_single_data_to_dsl_map(&[u8]) => <MapName, Resolver>
    • decode_to_dsl_maps
      • output_bincode_all_in_one(DSL) => all.bincode => Read => &[u8] => decode_to_dsl_maps(&[u8]) => <Language, <MapName, Resolver>>

decode::file

  • decode_file()
    • decode_single_file_to_flatten_map()
      • output_bincode(NonDSL) => {language}.bincode => decode_single_file_to_flatten_map({language}.bincode) => <(MapName, Key), Value>
    • decode_file_to_maps()
      • output_bincode_all_in_one(NonDSL) => all.bincode => decode_file_to_maps("all.bincode") => <Language, L10nFlattenMap>
    • decode_single_file_to_dsl_map()
      • output_bincode(DSL) => {language}.bincode => decode_single_file_to_dsl_map({language}.bincode) => <MapName, Resolver>
    • decode_file_to_dsl_maps()
      • output_bincode_all_in_one(DSL) => all.bincode => decode_file_to_dsl_maps("all.bincode") => <Language, <MapName, Resolver>>
Commit count: 128

cargo fmt