18. Външни зависимости: пакети, данни

18. Външни зависимости: пакети, данни

18. Външни зависимости: пакети, данни

13 декември 2017

Административни неща

Преговор

Нишки, канали

Домашно 3

грешки

Домашно 3

Demo

Пълния код: rust-hangman

fn main() {
    // ???
}

Домашно 3

Demo

Парсене на команди

Домашно 3

Demo

Как избираме дума?

Външни пакети

[dependencies]
rand = "*"

Данни за играта?

Локално инсталиране на пакет

Debug-ване

ENV vars

pub fn clear_screen() {
    if env::var("DEBUG").is_ok() {
        return;
    }

    print!("{}[2J", 27 as char);
    print!("{}[1;1H", 27 as char);
}
DEBUG=1 cargo run some-file.txt
DEBUG=1 hangman some-file.txt

По-сложна обработка на аргументи чрез structopt

[dependencies]
rand = "*"
structopt = "*"
structopt-derive = "*"

По-сложна обработка на аргументи чрез structopt

$ hangman --wordlist=words.txt --attempts=10 --debug
$ hangman -w words.txt -a 10 -d
$ hangman --help
$ hangman --version

По-сложна обработка на аргументи чрез structopt

extern crate structopt;
#[macro_use]
extern crate structopt_derive;
use structopt::StructOpt;

#[derive(StructOpt, Debug)]
#[structopt(name="hangman", about="A game of Hangman")]
pub struct Options {
    #[structopt(short="w", long="wordlist", help="The path to a word list")]
    wordlist_path: Option<String>,

    #[structopt(short="a", long="attempts", help="The number of attempts to guess the word", default_value="10")]
    attempts: u32,

    #[structopt(short="d", long="debug", help="Show debug info")]
    debug: bool,
}

Ограничения на structopt

Още полезни пакети

Въпроси