mirror of
https://github.com/rust-lang-nursery/rust-cookbook
synced 2025-02-16 12:18:27 +00:00
Added "parse and increment a version string" example
This commit is contained in:
parent
dcf288ae4e
commit
27888c0539
4 changed files with 63 additions and 0 deletions
|
@ -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"
|
||||
|
|
56
src/app.md
56
src/app.md
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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/
|
||||
|
|
Loading…
Add table
Reference in a new issue