jpreprocess_core/pos/
doushi.rs1use std::{fmt::Display, str::FromStr};
2
3use serde::{Deserialize, Serialize};
4
5use super::{POSKind, POSParseError};
6
7#[derive(Clone, Copy, PartialEq, Debug, Serialize, Deserialize)]
8pub enum Doushi {
10 Jiritsu,
12 Setsubi,
14 Hijiritsu,
16}
17
18impl FromStr for Doushi {
19 type Err = POSParseError;
20 fn from_str(s: &str) -> Result<Self, Self::Err> {
21 match s {
22 "自立" => Ok(Self::Jiritsu),
23 "接尾" => Ok(Self::Setsubi),
24 "非自立" => Ok(Self::Hijiritsu),
25 _ => Err(POSParseError::new(1, s.to_string(), POSKind::Doushi)),
26 }
27 }
28}
29
30impl Display for Doushi {
31 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32 write!(
33 f,
34 "{},*,*",
35 match &self {
36 Self::Jiritsu => "自立",
37 Self::Setsubi => "接尾",
38 Self::Hijiritsu => "非自立",
39 },
40 )
41 }
42}