Strongly typed String for Rust
Rust is a statically and strongly typed systems programming language. We can create a new type wrapping primitives.
rust
struct Age(i32);
struct Email(String);
There is a problem here, there are two types of strings in Rust, and it is hard to create strong types for both String
and &str
.
STRONG provides two types owned StrongBuf
and unsized Strong
.
```rust
use strong::{validators::Email, Strong, StrongBuf, Validator};
fn login(email: &Strong
let email: StrongBuf
Emailrequires
some_validators` feature.
```rust use strong::{validators::Email, Strong, StrongBuf, Validator};
enum Password {} impl Validator for Password { type Err = std::convert::Infallible; }
let email: StrongBuf
With shorthand
feature, Str
and S
are exported and can be substituted for StrongBuf
and Strong
.
rust
let email: StrongBuf<Email> = StrongBuf::validate("foo".to_string()).unwrap();
let email: Str<Email> = Str::validate("foo".to_string()).unwrap();
Licensed under MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
welcome!