wit-bindgen-cli 0.56.0

CLI tool to generate bindings for WIT documents and the component model.
include!(env!("BINDINGS"));

use exports::test::results::test as imports;

pub struct Component;

export!(Component);

impl exports::test::results::test::Guest for Component {
    fn string_error(a: f32) -> Result<f32, String> {
        if a == 0.0 {
            Err("zero".to_owned())
        } else {
            Ok(a)
        }
    }

    fn enum_error(a: f32) -> Result<f32, imports::E> {
        if a == 0.0 {
            Err(imports::E::A)
        } else {
            Ok(a)
        }
    }

    fn record_error(a: f32) -> Result<f32, imports::E2> {
        if a == 0.0 {
            Err(imports::E2 {
                line: 420,
                column: 0,
            })
        } else if a == 1.0 {
            Err(imports::E2 {
                line: 77,
                column: 2,
            })
        } else {
            Ok(a)
        }
    }

    fn variant_error(a: f32) -> Result<f32, imports::E3> {
        if a == 0.0 {
            Err(imports::E3::E2(imports::E2 {
                line: 420,
                column: 0,
            }))
        } else if a == 1.0 {
            Err(imports::E3::E1(imports::E::B))
        } else if a == 2.0 {
            Err(imports::E3::E1(imports::E::C))
        } else {
            Ok(a)
        }
    }

    fn empty_error(a: u32) -> Result<u32, ()> {
        if a == 0 {
            Err(())
        } else if a == 1 {
            Ok(42)
        } else {
            Ok(a)
        }
    }

    fn double_error(a: u32) -> Result<Result<(), String>, String> {
        if a == 0 {
            Ok(Ok(()))
        } else if a == 1 {
            Ok(Err("one".into()))
        } else {
            Err("two".into())
        }
    }
}