Files
RustySecrets/src/dss/metadata.rs
Noah Vesely c25f661645 Rustfmt updates + refactor Travis configuration (#60)
* Update rustfmt compliance

Looks like rustfmt has made some improvements recently, so wanted to bring the
code up to date.

* Add rustfmt to nightly item in Travis matrix

* Use Travis Cargo cache

* Allow fast_finish in Travis

Items that match the `allow_failures` predicate (right now, just Rust nightly),
will still finish, but Travis won't wait for them to report a result if the
other builds have already finished.

* Run kcov in a separate matrix build in Travis

* Rework allowed_failures logic

We don't want rustfmt to match `allow_failures` just because it needs to use
nightly, while we do want nightly to match `allow_failures`. Env vars provide a
solution.

* Add --all switch to rustfmt Travis

* Test building docs in Travis

* Use exact Ubuntu dependencies listed for kcov

Some of the dependencies we were installing were not listed on
https://github.com/SimonKagstrom/kcov/blob/master/INSTALL.md, and we were
missing one dependency that was listed there. When `sudo: true` Travis uses
Ubuntu Trusty.

* No need to build before running kcov

kcov builds its own test executables.

* Generate `Cargo.lock` w/ `cargo update` before running kcov

As noted in aeb3906cce8e3e26c7bc80d6aec417b365f3d2f1 it is not necessary to
build the project before running kcov, but kcov does require a `Cargo.lock`
file, which can be generated with `cargo update`.
2018-08-13 21:29:39 +02:00

32 lines
807 B
Rust

use ring::digest;
use std::collections::BTreeMap;
/// A share's public metadata.
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord, Default)]
pub struct MetaData {
/// The tags associated with the share
pub tags: BTreeMap<String, String>,
}
impl MetaData {
/// Construct a new MetaData struct.
pub fn new() -> Self {
MetaData {
tags: BTreeMap::new(),
}
}
/// Construct a new MetaData struct, holding the given tags
pub fn with_tags(tags: BTreeMap<String, String>) -> Self {
Self { tags }
}
pub(crate) fn hash_into(&self, ctx: &mut digest::Context) {
for (tag, value) in &self.tags {
ctx.update(tag.as_bytes());
ctx.update(b":");
ctx.update(value.as_bytes());
}
}
}