derive_wizard_types/interview.rs
1use crate::question::Question;
2
3/// A sequence of sections, which contain questions.
4#[derive(Debug, Clone)]
5pub struct Interview {
6 pub sections: Vec<Section>,
7}
8
9/// A section may be either questions in sequence or a single-choice selection question.
10#[derive(Debug, Clone)]
11pub enum Section {
12 Empty,
13
14 /// A sequence of questions.
15 Sequence(Sequence),
16
17 /// A single-choice selection from a list.
18 Alternatives(usize, Vec<Alternative>),
19}
20
21/// A sequence of questions.
22#[derive(Debug, Clone)]
23pub struct Sequence {
24 /// The list of questions to ask in sequence.
25 pub sequence: Vec<Question>,
26}
27
28/// Single-choice alternatives.
29#[derive(Debug, Clone)]
30pub struct Alternative {
31 /// The name of the alternative.
32 pub name: String,
33
34 /// The question to ask.
35 pub section: Section,
36}