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}