tldr_traits/
context.rs

1// This is free and unencumbered software released into the public domain.
2
3use crate::TldrLanguage;
4use core::str::FromStr;
5
6/// A context used when generating TL;DR summaries.
7///
8/// # Examples
9///
10/// ```rust
11/// # use tldr_traits::TldrContext;
12/// let context = TldrContext::builder()
13///     .language("en")
14///     .build();
15/// ```
16#[non_exhaustive]
17#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
18#[cfg_attr(feature = "builder", derive(bon::Builder))]
19#[cfg_attr(feature = "builder", builder(on(TldrLanguage, into)))]
20#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
21#[cfg_attr(feature = "serde", serde(default))]
22pub struct TldrContext {
23    /// The language to use when generating TL;DR summaries.
24    #[cfg_attr(feature = "builder", builder(default))]
25    pub language: TldrLanguage,
26}
27
28impl FromStr for TldrContext {
29    type Err = ();
30
31    fn from_str(input: &str) -> Result<Self, Self::Err> {
32        Ok(TldrContext {
33            language: input.parse()?,
34        })
35    }
36}