# Crate codes-agency
This package provides a common code representing standards agencies.
[](https://crates.io/crates/codes-agency)
[](https://docs.rs/codes-agency)
The two core types, [Agency] and [Standard] work together to provide reporting
capabilities to other *codes* project packages. Specifically a package that
provides types corresponding to a standard definition can have an instance of
the [Standard] struct that describes the standard. This in turn references the
[Agency] that controls the standard.
Consider the following example from the ISO 4217 package.
```rust
use codes_agency::{Agency, Standard};
// Taken from codes_iso_4217
pub const ISO_4217: Standard = Standard::new_with_long_ref(
Agency::ISO,
"4217",
"ISO 4217:2015",
"Currency codes",
"https://www.iso.org/iso-4217-currency-codes.html",
);
assert_eq!(ISO_4217.agency().to_string(), String::from("ISO"));
assert_eq!(ISO_4217.short_ref(), "4217");
assert_eq!(ISO_4217.long_ref(), Some(&"ISO 4217:2015"));
assert_eq!(ISO_4217.title(), "Currency codes");
assert_eq!(ISO_4217.url(), "https://www.iso.org/iso-4217-currency-codes.html");
```
For notes on the design of the API, see the repository
[README](https://github.com/johnstonskj/rust-codes/blob/main/README.md).
# Features
By default only the `serde` feature is enabled.
* `serde` - Enables serialization of the `Agency` type.
## Changes
**Version 0.1.8**
* Added new `Standardized` trait.
**Version 0.1.7**
* Add the GS1 as a new Agency.
**Version 0.1.6**
* Add the UN as a new Agency.
**Version 0.1.5**
* Added `ALL_CODES` constant.
**Version 0.1.4**
* Clean-up implementation based on newer `codes-common`
* Using new `Code` trait and macro-created implementation.
**Version 0.1.3**
* Added documentation to `Agency` variants.
* Renamed `Error` to be inline with other package naming conventions.
**Version 0.1.2**
* Remove the trait `Code`.
* Remove some feature flags.
* Added documentation.
* Added IANA, IEEE, IETF as agencies.
**Version 0.1.1**
* Initial documentation.
**Version 0.1.0**
* Initial place-holder release.
## TODO
1. Create a build system from agencies.xml
1. Add a `parent_agency` method (ITU is a part of UN)