Skip to main content

Template5_50002

Struct Template5_50002 

Source
pub struct Template5_50002 {
    pub simple: SimplePacking,
    pub first_order_values_width: u8,
    pub num_groups: u32,
    pub second_order_packed_values_width: u32,
    pub widths_width: u8,
    pub widths_len: u8,
    pub ordering_flags: OrderingFlags,
    pub spd_order: u8,
    pub optional: Option<Template5_50002Optional>,
}
Expand description

Data representation template 5.50002 - Second order packing.

This local template is defined by Météo-France.

§Examples

use std::io::Read;

use grib::{
    TryFromSlice,
    def::grib2::template::{Template5_50002, Template5_50002Optional, param_set},
};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut buf = Vec::new();

    let f = std::fs::File::open("testdata/constant-polyn0025.grib2")?;
    let mut f = std::io::BufReader::new(f);
    f.read_to_end(&mut buf)?;

    let mut pos = 0x9a;
    let actual = Template5_50002::try_from_slice(&buf, &mut pos)?;
    let expected = Template5_50002 {
        simple: param_set::SimplePacking {
            ref_val: -0.46913582,
            exp: -13,
            dec: 0,
            num_bits: 24,
        },
        first_order_values_width: 23,
        num_groups: 379,
        second_order_packed_values_width: 264145,
        widths_width: 5,
        widths_len: 14,
        ordering_flags: param_set::OrderingFlags(0b00000000),
        spd_order: 2,
        optional: Some(Template5_50002Optional {
            num_spd_width_bits: 24,
        }),
    };
    assert_eq!(actual, expected);

    Ok(())
}

Fields§

§simple: SimplePacking§first_order_values_width: u8

Width of first order values.

§num_groups: u32

Number of groups.

§second_order_packed_values_width: u32

Number of second order packed values.

§widths_width: u8

Width of widths.

§widths_len: u8

Width of lengths.

§ordering_flags: OrderingFlags§spd_order: u8

Order of spatial differencing.

§optional: Option<Template5_50002Optional>

Trait Implementations§

Source§

impl Clone for Template5_50002

Source§

fn clone(&self) -> Template5_50002

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Template5_50002

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Dump for Template5_50002

Source§

fn dump<'d, W: Write>( &self, parent: Option<&Cow<'_, str>>, doc_overrides: DocOverrides<'d>, pos: &mut usize, output: &mut W, ) -> Result<(), Error>

Perform dumping to output. Read more
Source§

impl PartialEq for Template5_50002

Source§

fn eq(&self, other: &Template5_50002) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Template5_50002

Source§

impl TryFromSlice for Template5_50002

Source§

fn try_from_slice(slice: &[u8], pos: &mut usize) -> TryFromSliceResult<Self>

Performs reading. The pos argument is a variable storing the starting position for reading within the slice. Read more
Source§

impl WriteToBuffer for Template5_50002

Source§

fn write_to_buffer(&self, buf: &mut [u8]) -> Result<usize, &'static str>

Performs writing and returns the number of bytes used.
Source§

fn num_bytes_required(&self) -> usize

Returns the number of bytes that are expected to be used for writing.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> DumpField for T
where T: Dump,

§

fn dump_field<'d, W>( &self, name: &str, parent: Option<&Cow<'_, str>>, _doc: Option<&str>, doc_overrides: DocOverrides<'d>, pos: &mut usize, output: &mut W, ) -> Result<(), Error>
where W: Write,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

§

fn simd_from(_simd: S, value: T) -> T

§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

§

fn simd_into(self, simd: S) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.