Skip to content

Commit e71907b

Browse files
committed
add unsafe_new
1 parent 761cab3 commit e71907b

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

src/refined.rs

+22
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ where
6565
})
6666
}
6767

68+
pub fn unsafe_new(value: T) -> Self {
69+
Self {
70+
value: RULE::validate(value)
71+
.ok()
72+
.expect("initialization by `unsafe_new` failed"),
73+
_rule: Default::default(),
74+
}
75+
}
76+
6877
pub fn value(&self) -> &RULE::Item {
6978
&self.value
7079
}
@@ -92,6 +101,19 @@ mod test {
92101
use serde::{Deserialize, Serialize};
93102
use serde_json::json;
94103

104+
#[test]
105+
fn test_unsafe_new_success() {
106+
let non_empty_string = Refined::<NonEmptyStringRule>::unsafe_new("Hello".to_string());
107+
assert_eq!(non_empty_string.value, "Hello");
108+
}
109+
110+
#[test]
111+
#[should_panic(expected = "initialization by `unsafe_new` failed")]
112+
fn test_unsafe_new_panic() {
113+
let non_empty_string = Refined::<NonEmptyStringRule>::unsafe_new("".to_string());
114+
assert_eq!(non_empty_string.value, ""); // unreachable
115+
}
116+
95117
#[test]
96118
fn test_refined_non_empty_string_ok() -> Result<(), Error<String>> {
97119
let non_empty_string = Refined::<NonEmptyStringRule>::new("Hello".to_string())?;

0 commit comments

Comments
 (0)