Added "parse and increment a version string" example

This commit is contained in:
Michael Liu 2017-09-28 12:52:19 -07:00 committed by Michal Budzynski
parent dcf288ae4e
commit 27888c0539
4 changed files with 63 additions and 0 deletions

View file

@ -36,6 +36,7 @@ reqwest = "0.7"
ring = "0.12.0"
same-file = "0.1"
select = "0.4"
semver = "0.8.0"
serde = "1.0"
serde_derive = "1.0"
serde_json = "1.0"

View file

@ -14,6 +14,7 @@
| [Recursively calculate file sizes at given depth][ex-file-sizes] | [![walkdir-badge]][walkdir] | [![cat-filesystem-badge]][cat-filesystem] |
| [Find all png files recursively][ex-glob-recursive] | [![glob-badge]][glob] | [![cat-filesystem-badge]][cat-filesystem] |
| [Find all files with given pattern ignoring filename case][ex-glob-with] | [![glob-badge]][glob] | [![cat-filesystem-badge]][cat-filesystem] |
| [Parse and increment a version string][ex-semver-increment] | [![semver-badge]][semver] | [![cat-config-badge]][cat-config] |
[ex-clap-basic]: #ex-clap-basic
@ -580,6 +581,59 @@ fn run() -> Result<()> {
# quick_main!(run);
```
[ex-semver-increment]: #ex-semver-increment
<a name="ex-semver-increment"></a>
## Parse and increment a version string.
[![semver-badge]][semver] [![cat-config-badge]][cat-config]
Construct a [`semver::Version`] from a string literal using [`Version::parse`], then increment it by patch, minor, and major version number one by one.
Note that in accordance with the [Semantic Versioning Specification], incrementing the minor version number resets the patch version number to 0 and incrementing the major version number resets both the minor and patch version numbers to 0.
[Semantic Versioning Specification]: http://semver.org/
```rust
# #[macro_use]
# extern crate error_chain;
extern crate semver;
use semver::Version;
#
# error_chain! {
# foreign_links {
# SemVer(semver::SemVerError);
# }
# }
fn run() -> Result<()> {
let mut release = Version::parse("0.2.6")?;
assert_eq!(release, Version {
major: 0,
minor: 2,
patch: 6,
pre: vec!(),
build: vec!(),
});
release.increment_patch();
assert_eq!(release, Version::parse("0.2.7")?);
println!("New patch release: v{}", release);
release.increment_minor();
assert_eq!(release, Version::parse("0.3.0")?);
println!("New minor release: v{}", release);
release.increment_major();
assert_eq!(release, Version::parse("1.0.0")?);
println!("New major release: v{}", release);
Ok(())
}
#
# quick_main!(run);
```
{{#include links.md}}
<!-- API Reference -->
@ -597,6 +651,8 @@ fn run() -> Result<()> {
[`Path::strip_prefix`]: https://doc.rust-lang.org/std/path/struct.Path.html#method.strip_prefix
[`same_file::is_same_file`]: https://docs.rs/same-file/*/same_file/fn.is_same_file.html#method.is_same_file
[`same_file::Handle`]: https://docs.rs/same-file/*/same_file/struct.Handle.html
[`semver::Version`]: https://docs.rs/semver/*/semver/struct.Version.html
[`Version::parse`]: https://docs.rs/semver/*/semver/struct.Version.html#method.parse
[`WalkDir::DirEntry`]: https://docs.rs/walkdir/*/walkdir/struct.DirEntry.html
[`WalkDir::depth`]: https://docs.rs/walkdir/*/walkdir/struct.DirEntry.html#method.depth
[`WalkDir::max_depth`]: https://docs.rs/walkdir/*/walkdir/struct.WalkDir.html#method.max_depth

View file

@ -102,6 +102,7 @@ community. It needs and welcomes help. For details see
| [Recursively calculate file sizes at given depth][ex-file-sizes] | [![walkdir-badge]][walkdir] | [![cat-filesystem-badge]][cat-filesystem] |
| [Find all png files recursively][ex-glob-recursive] | [![glob-badge]][glob] | [![cat-filesystem-badge]][cat-filesystem] |
| [Find all files with given pattern ignoring filename case][ex-glob-with] | [![glob-badge]][glob] | [![cat-filesystem-badge]][cat-filesystem] |
| [Parse and increment a version string][ex-semver-increment] | [![semver-badge]][semver] | [![cat-config-badge]][cat-config] |
## [Logging](logging.html)
@ -181,6 +182,7 @@ community. It needs and welcomes help. For details see
[ex-rest-get]: net.html#ex-rest-get
[ex-rest-head]: net.html#ex-rest-head
[ex-rest-post]: net.html#ex-rest-post
[ex-semver-increment]: app.html#ex-semver-increment
[ex-serialize-csv]: encoding.html#ex-serialize-csv
[ex-sha-digest]: basics.html#ex-sha-digest
[ex-std-read-lines]: basics.html#ex-std-read-lines

View file

@ -11,6 +11,8 @@ Keep lines sorted.
[cat-command-line]: https://crates.io/categories/command-line-interface
[cat-compression-badge]: https://badge-cache.kominick.com/badge/compression--x.svg?style=social
[cat-compression]: https://crates.io/categories/compression
[cat-config-badge]: https://badge-cache.kominick.com/badge/config--x.svg?style=social
[cat-config]: https://crates.io/categories/config
[cat-concurrency-badge]: https://badge-cache.kominick.com/badge/concurrency--x.svg?style=social
[cat-concurrency]: https://crates.io/categories/concurrency
[cat-cryptography-badge]: https://badge-cache.kominick.com/badge/cryptography--x.svg?style=social
@ -94,6 +96,8 @@ Keep lines sorted.
[same_file]: https://docs.rs/same-file/
[select-badge]: https://badge-cache.kominick.com/crates/v/select.svg?label=select
[select]: https://docs.rs/select/
[semver-badge]: https://badge-cache.kominick.com/crates/v/semver.svg?label=semver
[semver]: https://docs.rs/semver/
[serde-badge]: https://badge-cache.kominick.com/crates/v/serde.svg?label=serde
[serde-json-badge]: https://badge-cache.kominick.com/crates/v/serde_json.svg?label=serde_json
[serde-json]: https://docs.serde.rs/serde_json/