Skip to main content

betfair_typegen/
lib.rs

1//! This crate is used to generate the types for the betfair API.
2//! Input: Betfair API-NG WSDL file
3//! Output: Rust types for the Betfair API
4
5#![warn(missing_docs, unreachable_pub, unused_crate_dependencies)]
6#![deny(unused_must_use, rust_2018_idioms)]
7#![doc(test(
8    no_crate_inject,
9    attr(deny(warnings, rust_2018_idioms), allow(dead_code, unused_variables))
10))]
11#![allow(incomplete_features)]
12
13mod aping_ast;
14pub mod gen_v1;
15mod generator;
16
17use betfair_xml_parser::Interface;
18use generator::settings::GeneratorSettings;
19pub use generator::{BetfairTypeGenerator, output, settings};
20pub use proc_macro2::TokenStream;
21
22/// The trait that is used to generate the types for the Betfair API
23pub trait GeneratorStrategy {
24    /// Generate the types for the Betfair API
25    /// # Arguments
26    /// * `aping` - The Betfair API interface
27    /// # Returns
28    /// The generated types for the Betfair API that can be written to a file
29    fn generate_submodule<T: Into<Interface>>(&self, aping: T) -> TokenStream;
30
31    /// Generate the top level documentation and types
32    fn generate_mod<T: GeneratorSettings>(&self, settings: T) -> TokenStream;
33}