fn arbitrary()

in shed/ascii_ext/src/lib.rs [96:163]


    fn arbitrary(g: &mut Gen) -> Self {
        let mode = u32::arbitrary(g) % 100;
        let ret = match mode {
            0..=14 => {
                // Control characters
                unsafe { ascii::AsciiChar::from_ascii_unchecked(gen_ascii_in_range(g, 0u8, 0x1F)) }
            }
            15..=39 => {
                // Characters often used in programming languages
                use ascii::AsciiChar;
                *g.choose(&[
                    AsciiChar::Space,
                    AsciiChar::Tab,
                    AsciiChar::LineFeed,
                    AsciiChar::Tilde,
                    AsciiChar::Grave,
                    AsciiChar::Exclamation,
                    AsciiChar::At,
                    AsciiChar::Hash,
                    AsciiChar::Dollar,
                    AsciiChar::Percent,
                    AsciiChar::Ampersand,
                    AsciiChar::Asterisk,
                    AsciiChar::ParenOpen,
                    AsciiChar::ParenClose,
                    AsciiChar::UnderScore,
                    AsciiChar::Minus,
                    AsciiChar::Equal,
                    AsciiChar::Plus,
                    AsciiChar::BracketOpen,
                    AsciiChar::BracketClose,
                    AsciiChar::CurlyBraceOpen,
                    AsciiChar::CurlyBraceClose,
                    AsciiChar::Colon,
                    AsciiChar::Semicolon,
                    AsciiChar::Apostrophe,
                    AsciiChar::Quotation,
                    AsciiChar::BackSlash,
                    AsciiChar::VerticalBar,
                    AsciiChar::Caret,
                    AsciiChar::Comma,
                    AsciiChar::LessThan,
                    AsciiChar::GreaterThan,
                    AsciiChar::Dot,
                    AsciiChar::Slash,
                    AsciiChar::Question,
                    AsciiChar::_0,
                    AsciiChar::_1,
                    AsciiChar::_2,
                    AsciiChar::_3,
                    AsciiChar::_3,
                    AsciiChar::_4,
                    AsciiChar::_6,
                    AsciiChar::_7,
                    AsciiChar::_8,
                    AsciiChar::_9,
                ])
                .unwrap()
            }
            40..=99 => {
                // Completely arbitrary characters
                unsafe { ascii::AsciiChar::from_ascii_unchecked(gen_ascii_in_range(g, 0u8, 0x80)) }
            }
            _ => unreachable!(),
        };

        AsciiChar(ret)
    }