Skip to content

Commit 9cce85b

Browse files
committed
Integrate with Bon.
1 parent fff0e73 commit 9cce85b

File tree

5 files changed

+138
-2
lines changed

5 files changed

+138
-2
lines changed

Cargo.lock

Lines changed: 95 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,20 @@ publish = true
1818

1919
[features]
2020
default = ["all", "std"]
21-
all = ["serde"]
22-
std = ["serde?/std"]
21+
all = ["builder", "serde"]
22+
std = ["bon?/std", "serde?/std"]
2323
unstable = []
2424

2525
# Optional features:
26+
builder = ["dep:bon"]
2627
serde = ["dep:serde"]
2728

2829
[dependencies]
2930

3031
# Optional dependencies:
32+
bon = { version = "3.6", default-features = false, features = [
33+
"alloc",
34+
], optional = true }
3135
serde = { version = "1", default-features = false, features = [
3236
"alloc",
3337
"derive",

src/context.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,19 @@
33
use crate::TldrLanguage;
44
use core::str::FromStr;
55

6+
/// ```rust
7+
/// # use tldr_traits::TldrContext;
8+
/// let context = TldrContext::builder()
9+
/// .language("en")
10+
/// .build();
11+
/// ```
612
#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
13+
#[cfg_attr(feature = "builder", derive(bon::Builder))]
14+
#[cfg_attr(feature = "builder", builder(on(TldrLanguage, into)))]
715
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
816
#[cfg_attr(feature = "serde", serde(default))]
917
pub struct TldrContext {
18+
#[cfg_attr(feature = "builder", builder(default))]
1019
pub language: TldrLanguage,
1120
}
1221

src/language.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
use alloc::string::String;
44
use core::{fmt, str::FromStr};
55

6+
/// ```rust
7+
/// # use tldr_traits::TldrLanguage;
8+
/// let language = TldrLanguage::English;
9+
/// ```
610
#[non_exhaustive]
711
#[derive(Clone, Debug, Default, Eq, Hash, PartialEq)]
812
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
@@ -14,6 +18,15 @@ pub enum TldrLanguage {
1418
Other(String),
1519
}
1620

21+
impl From<&str> for TldrLanguage {
22+
fn from(input: &str) -> Self {
23+
match input {
24+
"en" => TldrLanguage::English,
25+
_ => TldrLanguage::Other(input.into()),
26+
}
27+
}
28+
}
29+
1730
impl FromStr for TldrLanguage {
1831
type Err = ();
1932

src/summary.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,24 @@ use crate::{Tldr, TldrContext, TldrResult, ToTldr};
44
use alloc::{boxed::Box, string::String};
55
use core::fmt::Debug;
66

7+
/// ```rust
8+
/// # use tldr_traits::TldrSummary;
9+
/// let summary: TldrSummary<String> = TldrSummary::builder()
10+
/// .who("John")
11+
/// .what("a book")
12+
/// .when("yesterday")
13+
/// .r#where("the library")
14+
/// .why("to learn")
15+
/// .whence("from the internet")
16+
/// .how("by reading")
17+
/// .build();
18+
/// ```
19+
///
720
/// See: https://en.wikipedia.org/wiki/Five_Ws
821
/// See: https://en.wikipedia.org/wiki/Interrogative_word
922
#[derive(Clone, Debug, Default)]
23+
#[cfg_attr(feature = "builder", derive(bon::Builder))]
24+
#[cfg_attr(feature = "builder", builder(on(T, into)))]
1025
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
1126
#[cfg_attr(feature = "serde", serde(default))]
1227
pub struct TldrSummary<T: Clone + Debug + Default = String> {

0 commit comments

Comments
 (0)