Skip to content

Commit

Permalink
Add serde examples in tests and README
Browse files Browse the repository at this point in the history
  • Loading branch information
gngeorgiev committed Nov 21, 2021
1 parent 7bab2ba commit 8a3cc76
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 48 deletions.
11 changes: 1 addition & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,4 @@ serde = { version = "1.0.130", features = ["derive"], optional = true }
serde_json = "1.0"

[features]
default = []

[[test]]
path = "tests/compare.rs"
name = "compare"

[[test]]
path = "tests/serde.rs"
name = "serde"
required-features = ["serde"]
default = []
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,22 @@ let ver = Version::new("1.2.4-pre1").with_options(opts).parse()?;
assert!(range.test(&ver));
```

### Serializing

In order to allow serializing the semver structs allow the `serde` feature:

```toml
semver_rs = { version = "0.1", features = ["serde"] }
```

```rust
use semver_rs::{Range, Options};

let opts = Options::builder().loose(true).include_prerelease(true).build();
let range = Range::new(">=1.2.3").with_options(opts).parse().unwrap();
let _ = serde_json::to_string(&opts).unwrap();
```

## Comparisons and considerations with other crates

At the time of writing this README there's only one other crate in the Rust ecosystem capable of parsing semver - [steveklabnik/semver](https://github.com/steveklabnik/semver).
Expand Down
15 changes: 13 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,24 @@
//! use semver_rs::{Version, Range, Options};
//!
//! let opts = Options::builder().loose(true).include_prerelease(true).build();
//! let range = Range::new(">=1.2.3").with_options(opts.clone()).parse()?;
//! let ver = Version::new("1.2.4-pre1").with_options(opts.clone()).parse()?;
//! let range = Range::new(">=1.2.3").with_options(opts).parse()?;
//! let ver = Version::new("1.2.4-pre1").with_options(opts).parse()?;
//!
//! assert!(range.test(&ver));
//!
//! # Ok::<(), semver_rs::Error>(())
//! ```
//!
//! #### Serialisation with Serde
//! ```
//! use semver_rs::{Range, Options};
//!
//! let opts = Options::builder().loose(true).include_prerelease(true).build();
//! let range = Range::new(">=1.2.3").with_options(opts).parse()?;
//! let _ = serde_json::to_string(&opts)?;
//!
//! # Ok::<(), Box<dyn std::error::Error + 'static>>(())
//! ```

mod builder;
mod comparator;
Expand Down
17 changes: 0 additions & 17 deletions tests/compare.rs

This file was deleted.

19 changes: 0 additions & 19 deletions tests/serde.rs

This file was deleted.

0 comments on commit 8a3cc76

Please sign in to comment.