pub struct Rational {
pub num: u32,
pub denom: u32,
}
Expand description
An unsigned rational number, which is a pair of 32-bit unsigned integers.
Fields§
§num: u32
§denom: u32
Implementations§
Source§impl Rational
impl Rational
Sourcepub fn to_f64(&self) -> f64
pub fn to_f64(&self) -> f64
Converts the value to an f64.
Examples found in repository?
examples/reading.rs (line 67)
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
fn main() {
let file = File::open("tests/exif.jpg").unwrap();
let exif = Reader::new().read_from_container(
&mut BufReader::new(&file)).unwrap();
// To obtain a string representation, `Value::display_as`
// or `Field::display_value` can be used. To display a value with its
// unit, call `with_unit` on the return value of `Field::display_value`.
let tag_list = [Tag::ExifVersion,
Tag::PixelXDimension,
Tag::XResolution,
Tag::ImageDescription,
Tag::DateTime];
for tag in tag_list {
if let Some(field) = exif.get_field(tag, In::PRIMARY) {
println!("{}: {}",
field.tag, field.display_value().with_unit(&exif));
}
}
// To get unsigned integer value(s) from either of BYTE, SHORT,
// or LONG, `Value::get_uint` or `Value::iter_uint` can be used.
if let Some(field) = exif.get_field(Tag::PixelXDimension, In::PRIMARY) {
if let Some(width) = field.value.get_uint(0) {
println!("Valid width of the image is {}.", width);
}
}
// To convert a Rational or SRational to an f64, `Rational::to_f64`
// or `SRational::to_f64` can be used.
if let Some(field) = exif.get_field(Tag::XResolution, In::PRIMARY) {
match field.value {
Value::Rational(ref vec) if !vec.is_empty() =>
println!("X resolution is {}.", vec[0].to_f64()),
_ => {},
}
}
// To parse a DateTime-like field, `DateTime::from_ascii` can be used.
if let Some(field) = exif.get_field(Tag::DateTime, In::PRIMARY) {
match field.value {
Value::Ascii(ref vec) if !vec.is_empty() => {
if let Ok(datetime) = DateTime::from_ascii(&vec[0]) {
println!("Year of DateTime is {}.", datetime.year);
}
},
_ => {},
}
}
}
Trait Implementations§
impl Copy for Rational
Auto Trait Implementations§
impl Freeze for Rational
impl RefUnwindSafe for Rational
impl Send for Rational
impl Sync for Rational
impl Unpin for Rational
impl UnwindSafe for Rational
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)