pub struct Metadata {Show 15 fields
pub format_version: u32,
pub name: String,
pub encoding: String,
pub default_word_cost: i16,
pub default_left_context_id: u16,
pub default_right_context_id: u16,
pub default_field_value: String,
pub flexible_csv: bool,
pub skip_invalid_cost_or_id: bool,
pub normalize_details: bool,
pub connection_id_mapping: bool,
pub context_id_map: Option<ContextIdMap>,
pub dictionary_schema: Schema,
pub user_dictionary_schema: Schema,
pub model_info: Option<ModelInfo>,
}Fields§
§format_version: u32On-disk layout version of the dictionary directory this metadata was
written into. See DICTIONARY_FORMAT_VERSION.
Absent from source metadata.json files, which describe build inputs
rather than a built dictionary, and absent from dictionaries built
before the field existed; both read back as
[LEGACY_FORMAT_VERSION].
name: String§encoding: String§default_word_cost: i16§default_left_context_id: u16§default_right_context_id: u16§default_field_value: String§flexible_csv: bool§skip_invalid_cost_or_id: bool§normalize_details: bool§connection_id_mapping: boolReorder connection-cost context IDs by frequency at build time so that
frequently-used connection-matrix cells cluster in cache. Optional and
defaults to false; when false the field is omitted from metadata.json
so existing files stay byte-identical, and the build output is unchanged.
context_id_map: Option<ContextIdMap>The context-ID permutation that was applied when this dictionary was built.
Written into the built metadata.json when connection_id_mapping is on, so
that anything compiled later against this dictionary — most importantly a
detailed user dictionary — can be relabeled into the same ID space. Absent (and
omitted from the file) for an un-remapped dictionary, which keeps those builds
byte-identical. Source metadata.json files carry only the boolean flag.
dictionary_schema: Schema§user_dictionary_schema: Schema§model_info: Option<ModelInfo>Implementations§
Source§impl Metadata
impl Metadata
pub fn new( name: String, encoding: String, simple_word_cost: i16, default_left_context_id: u16, default_right_context_id: u16, default_field_value: String, flexible_csv: bool, skip_invalid_cost_or_id: bool, normalize_details: bool, schema: Schema, userdic_schema: Schema, ) -> Self
Sourcepub fn load(data: &[u8]) -> LinderaResult<Self>
pub fn load(data: &[u8]) -> LinderaResult<Self>
Load metadata from binary data (JSON format). This provides a consistent interface with other dictionary components.
Sourcepub fn validate_format_version(&self) -> LinderaResult<()>
pub fn validate_format_version(&self) -> LinderaResult<()>
Rejects a built dictionary whose on-disk layout this build cannot read.
Call this after loading the metadata.json of a built dictionary
directory. Do not call it on a source metadata.json: those
describe build inputs (schema, encoding, flexible_csv and friends),
carry no format_version, and stay valid across format changes.
Without this check a stale dictionary is not merely unreadable but
silently wrong: matrix.mtx, dict.vals and dict.words are
headerless raw arrays, so an old file of a plausible length decodes
into garbage costs rather than failing.
§Returns
Ok(()) when the dictionary was built with this crate’s format
version, otherwise an error naming both versions and how to recover.
Sourcepub fn load_or_default(data: &[u8], default_fn: fn() -> Self) -> Self
pub fn load_or_default(data: &[u8], default_fn: fn() -> Self) -> Self
Load metadata with fallback to default values. This is used when feature flags are disabled and data might be empty.
Trait Implementations§
Source§impl Archive for Metadata
impl Archive for Metadata
Source§const COPY_OPTIMIZATION: CopyOptimization<Self>
const COPY_OPTIMIZATION: CopyOptimization<Self>
serialize. Read moreSource§type Archived = ArchivedMetadata
type Archived = ArchivedMetadata
Source§type Resolver = MetadataResolver
type Resolver = MetadataResolver
Source§impl<'de> Deserialize<'de> for Metadata
impl<'de> Deserialize<'de> for Metadata
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<__D: Fallible + ?Sized> Deserialize<Metadata, __D> for Archived<Metadata>where
u32: Archive,
<u32 as Archive>::Archived: Deserialize<u32, __D>,
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
i16: Archive,
<i16 as Archive>::Archived: Deserialize<i16, __D>,
u16: Archive,
<u16 as Archive>::Archived: Deserialize<u16, __D>,
bool: Archive,
<bool as Archive>::Archived: Deserialize<bool, __D>,
Option<ContextIdMap>: Archive,
<Option<ContextIdMap> as Archive>::Archived: Deserialize<Option<ContextIdMap>, __D>,
Schema: Archive,
<Schema as Archive>::Archived: Deserialize<Schema, __D>,
Option<ModelInfo>: Archive,
<Option<ModelInfo> as Archive>::Archived: Deserialize<Option<ModelInfo>, __D>,
impl<__D: Fallible + ?Sized> Deserialize<Metadata, __D> for Archived<Metadata>where
u32: Archive,
<u32 as Archive>::Archived: Deserialize<u32, __D>,
String: Archive,
<String as Archive>::Archived: Deserialize<String, __D>,
i16: Archive,
<i16 as Archive>::Archived: Deserialize<i16, __D>,
u16: Archive,
<u16 as Archive>::Archived: Deserialize<u16, __D>,
bool: Archive,
<bool as Archive>::Archived: Deserialize<bool, __D>,
Option<ContextIdMap>: Archive,
<Option<ContextIdMap> as Archive>::Archived: Deserialize<Option<ContextIdMap>, __D>,
Schema: Archive,
<Schema as Archive>::Archived: Deserialize<Schema, __D>,
Option<ModelInfo>: Archive,
<Option<ModelInfo> as Archive>::Archived: Deserialize<Option<ModelInfo>, __D>,
Auto Trait Implementations§
impl Freeze for Metadata
impl RefUnwindSafe for Metadata
impl Send for Metadata
impl Sync for Metadata
impl Unpin for Metadata
impl UnsafeUnpin for Metadata
impl UnwindSafe for Metadata
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.