objectiveai_sdk/functions/check/example_inputs/
multi.rs1use rand::rngs::StdRng;
2
3use crate::functions::expression::{InputSchema, InputValue};
4
5pub fn generate(schema: &InputSchema, rng: StdRng) -> Generator {
6 match schema {
7 InputSchema::Boolean(s) => {
8 Generator::Boolean(super::boolean::generate(s, rng))
9 }
10 InputSchema::String(s) => {
11 Generator::String(super::string::generate(s, rng))
12 }
13 InputSchema::Integer(s) => {
14 Generator::Integer(super::integer::generate(s, rng))
15 }
16 InputSchema::Number(s) => {
17 Generator::Number(super::number::generate(s, rng))
18 }
19 InputSchema::Image(s) => {
20 Generator::Image(super::image::generate(s, rng))
21 }
22 InputSchema::Audio(s) => {
23 Generator::Audio(super::audio::generate(s, rng))
24 }
25 InputSchema::Video(s) => {
26 Generator::Video(super::video::generate(s, rng))
27 }
28 InputSchema::File(s) => Generator::File(super::file::generate(s, rng)),
29 InputSchema::Object(s) => {
30 Generator::Object(super::object::generate(s, rng))
31 }
32 InputSchema::Array(s) => {
33 Generator::Array(super::array::generate(s, rng))
34 }
35 InputSchema::AnyOf(s) => {
36 Generator::AnyOf(super::any_of::generate(s, rng))
37 }
38 }
39}
40
41pub enum Generator {
42 Boolean(super::boolean::Generator<StdRng>),
43 String(super::string::Generator<StdRng>),
44 Integer(super::integer::Generator<StdRng>),
45 Number(super::number::Generator<StdRng>),
46 Image(super::image::Generator<StdRng>),
47 Audio(super::audio::Generator<StdRng>),
48 Video(super::video::Generator<StdRng>),
49 File(super::file::Generator<StdRng>),
50 Object(super::object::Generator),
51 Array(super::array::Generator<StdRng>),
52 AnyOf(super::any_of::Generator<StdRng>),
53}
54
55impl Iterator for Generator {
56 type Item = InputValue;
57 fn next(&mut self) -> Option<InputValue> {
58 match self {
59 Generator::Boolean(g) => g.next(),
60 Generator::String(g) => g.next(),
61 Generator::Integer(g) => g.next(),
62 Generator::Number(g) => g.next(),
63 Generator::Image(g) => g.next(),
64 Generator::Audio(g) => g.next(),
65 Generator::Video(g) => g.next(),
66 Generator::File(g) => g.next(),
67 Generator::Object(g) => g.next(),
68 Generator::Array(g) => g.next(),
69 Generator::AnyOf(g) => g.next(),
70 }
71 }
72}