METAR parsing library for Rust
Quick usage
This simple usage will print out the parsed data from the METAR.
```rust
extern crate metar;
fn main() {
let metar = "EGHI 282120Z 19015KT 140V220 6000 RA SCT006 BKN009 16/14 Q1006";
let r = metar::Metar::parse(metar).unwrap();
println!("{:#?}", r);
}
```
Issues?
METARs are complicated structures. If you come across a METAR that doesn't parse
correctly, please open an issue and include the METAR. This will aid in debugging
the issue significantly.
Definition of a METAR
A METAR can be defined with the following Backus-Naur Form description:
```bnf
::= ' ' ' ' ' ' ' ' ' ' ' '
::=
::= '' | 'AUTO'
::= 'Z'
::= | '3'
::= '0' | '1' | '2'
::= '0' | '1'
::= | '2'
::= '0' | '1'
::= '0' | '1' | '2' | '3'
::=
::= '0' | '1' | '2' | '3' | '4' | '5'
::= 'KT'
| 'MPS'
::= | 'VRB' | ''
::= '' | 'G'
::= '' | 'V' ' '
::= | '3'
::= '0' | '1' | '2'
::= '0' | '1' | '2' | '3' | '4' | '5'
::= 'CAVOK' |
::= | 'SM'
| 'M' | 'M' 'SM'
::= 'CLR' | 'SKC' | 'NCD' | 'NSC' | |
::= |
::= 'R' '/'
::= | '3'
::= '' | 'L' | 'C' | 'R'
::= 'P' | 'M'
::= 'D' | 'U' | 'N'
::= |
::=
::= 'FEW' | 'SCT' | 'BKN' | 'OVC' | '///'
::= | '///'
::= '' | 'CB' | 'TCU' | '///'
::= 'VV'
::= '///' |
::= '' | |
::=
|
|
|
::= '' | '+' | '-' | 'VC'
::= '' | 'MI' | 'PR' | 'BC' | 'DR' | 'BL' | 'SH' | 'TS' | 'FZ'
::= 'RA' | 'DZ' | 'SN' | 'SG' | 'IC' | 'PL' | 'GR' | 'GS' | 'UP'
::= 'FG' | 'VA' | 'BR' | 'HZ' | 'DU' | 'FU' | 'SA' | 'PY'
::= 'SQ' | 'PO' | 'DS' | 'SS' | 'FC'
::= 'B' 'E'
| 'B'
| 'E'
::= |
::= '/'
::= 'M'
|
::= 'Q'
| 'A'
::= ' RMK' ...
::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
```