Merge pull request #356 from hyperium/q
feat(headers): add `q` function to ease creating Quality values
This commit is contained in:
		| @@ -22,7 +22,7 @@ use unicase::UniCase; | |||||||
| use self::cell::OptCell; | use self::cell::OptCell; | ||||||
| use {http, HttpResult, HttpError}; | use {http, HttpResult, HttpError}; | ||||||
|  |  | ||||||
| pub use self::shared::{Encoding, EntityTag, Quality, QualityItem, qitem}; | pub use self::shared::{Encoding, EntityTag, Quality, QualityItem, qitem, q}; | ||||||
| pub use self::common::*; | pub use self::common::*; | ||||||
|  |  | ||||||
| mod cell; | mod cell; | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| pub use self::encoding::Encoding; | pub use self::encoding::Encoding; | ||||||
| pub use self::entity::EntityTag; | pub use self::entity::EntityTag; | ||||||
| pub use self::quality_item::{Quality, QualityItem, qitem}; | pub use self::quality_item::{Quality, QualityItem, qitem, q}; | ||||||
|  |  | ||||||
| mod encoding; | mod encoding; | ||||||
| mod entity; | mod entity; | ||||||
|   | |||||||
| @@ -11,11 +11,10 @@ use std::str; | |||||||
|  |  | ||||||
| /// Represents a quality used in quality values. | /// Represents a quality used in quality values. | ||||||
| /// | /// | ||||||
| /// `Quality` should only be created using the `FromPrimitve` trait methods `from_f32` and | /// Can be created with the `q` function. | ||||||
| /// `from_f64`, they take a value between 0.0 and 1.0. To create a quality with the value 1.0, the |  | ||||||
| /// default you can use `let q: Quality = Default::default()`. |  | ||||||
| /// | /// | ||||||
| /// # Implementation notes | /// # Implementation notes | ||||||
|  | /// | ||||||
| /// The quality value is defined as a number between 0 and 1 with three decimal places. This means | /// The quality value is defined as a number between 0 and 1 with three decimal places. This means | ||||||
| /// there are 1000 possible values. Since floating point numbers are not exact and the smallest | /// there are 1000 possible values. Since floating point numbers are not exact and the smallest | ||||||
| /// floating point data type (`f32`) consumes four bytes, hyper uses an `u16` value to store the | /// floating point data type (`f32`) consumes four bytes, hyper uses an `u16` value to store the | ||||||
| @@ -149,6 +148,11 @@ pub fn qitem<T>(item: T) -> QualityItem<T> { | |||||||
|     QualityItem::new(item, Default::default()) |     QualityItem::new(item, Default::default()) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /// Convenience function to create a `Quality` fromt a float. | ||||||
|  | pub fn q(f: f32) -> Quality { | ||||||
|  |     FromPrimitive::from_f32(f).expect("q value must be between 0.0 and 1.0") | ||||||
|  | } | ||||||
|  |  | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use std::num::FromPrimitive; |     use std::num::FromPrimitive; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user