Parses the metadata XML describing an SAP OData V2 service and generates two Rust modules: one for the Service Document and one for the metadata document.
The code generated by this crate is designed to work in conjunction with the crate parse-sap-atom-feed.
- 
The metadata description of the OData service is used to declare for all the
structs andenums needed to interact with your chosen OData service. - 
For each OData Collection, a Rust
structis generated to represent a row of that collection, then the entire collection is represented as aVecof that generatedstruct.- 
Edm.DateTimefields are transformed intochrono::NaiveDateTimeusing a custom deserializer. - 
Edm.Decimalfields transformed intorust_decimal::DecimalHowever, this transformation can only account for the declared number of decimal places (defined by the
Scaleproperty). The number of decimal digits (defined by thePrecisionproperty) is ignored asrust_decimal::Decimalvalues use a hard-coded precision of 64. 
 - 
 - 
The generated module declares external crate dependencies on
quick_xmlandserdeand possibly also onchrono,rust_decimalanduuiddepending on whetherEdm.DateTime,Edm.DecimalorEdm.Guidproperties are encountered. 
- 
For each
EntityTypeoccurring in the metadata:- A 
structis created using theEntityType's name followed byMetadata. E.G.<EntityType Name="BusinessPartner">generatespub struct BusinessPartnerMetadata - An implementation is created containing a 
key()function and getter function for eachstructproperty that returns an instance of aPropertyobject. 
 - A 
 - 
The
Nameproperty of each<Association>metadata tag is stripped of theAssoc_prefix and added as a member to the Associationsenum. - 
The
Nameproperty of each<AssociationSet>metadata tag is stripped of theAssoc_prefix and the_AssocSetsuffix and added as a member to the AssociationSetsenum. - 
For each
<Association>or<AssociationSet>enum, there is an implementation containing a getter function for each Association(Set). - 
The generated module declares an external crate dependency on
parse_sap_atom_feed. 
| Version | Task | Description | 
|---|---|---|
| 1.4.9 | Feature | Add convenience macro include_mod!() | 
| 1.4.8 | Fix | Handle possible external crate dependency on uuid | 
| 1.4.7 | Chore | Add categories to Cargo.toml | 
| 1.4.6 | Chore | Bump version of parse-sap-atom-feed dependency | 
| 1.4.5 | Fix | Correct failing test | 
| 1.4.4 | Fix | Split declaration of external crate dependencies into known and dynamically derived | 
| 1.4.3 | Fix | Add declarations for external crate dependencies | 
| 1.4.2 | Fix | Depend on AtomLink definition in parse-sap-atom-feedGate call to rustfmt behind parser feature | 
| 1.4.1 | Fix | Remove duplicate code and update docs | 
| 1.4.0 | Feature | Generate code to use custom rust_decimal::Decimal parser in parse-sap-atom-feed | 
| 1.3.6 | Chore | Refactor parser generation code | 
| 1.3.5 | Fix | Correct use declaration for feature | 
| 1.3.4 | Chore | Improve and expand tests | 
| 1.3.3 | Chore | Internal refactoring to improve architectural consistency | 
| 1.3.2 | Feature | Generate metadata for Associations and AssociationSets | 
| 1.3.1 | Chore | Internal optimisation and refactoring. No changes to functionality  | 
| 1.3.0 | Feature | Generate a metadata module | 
| 1.2.5 | Chore | Update Cargo.toml dependency versions | 
| 1.2.4 | Feature | Add get_key() function to EntityType trait |