morphir_core/naming/
mod.rs1#![allow(clippy::duplicate_mod)]
2pub mod fqname;
3pub mod interner;
4pub mod module_name;
5pub mod name;
6pub mod package_name;
7pub mod path;
8pub mod qname;
9pub mod stem;
10
11pub use fqname::FQName;
13pub use interner::{Word, intern, resolve};
14pub use module_name::ModuleName;
15pub use name::{CANONICAL_STYLE, Name, NameStyle, Segment};
16pub use package_name::PackageName;
17pub use path::Path;
18pub use qname::QName;
19pub use stem::{MIN_TRUNCATED_STEM_BUDGET, escaped_path, file_stem, is_stem_of, truncate_stem};
20
21pub mod codecs {
23 pub mod classic {
25 use crate::naming::{Name, Path};
26 use serde::Serializer;
27
28 pub fn serialize_name<S>(name: &Name, serializer: S) -> Result<S::Ok, S::Error>
29 where
30 S: Serializer,
31 {
32 serializer.collect_seq(name.words())
34 }
35
36 pub fn serialize_path<S>(path: &Path, serializer: S) -> Result<S::Ok, S::Error>
37 where
38 S: Serializer,
39 {
40 let parts: Vec<Vec<String>> = path.segments.iter().map(Name::words).collect();
42 serializer.collect_seq(parts)
43 }
44 }
45}