1pub mod consts;
2mod dir;
3mod version;
4
5use std::str::FromStr;
6
7pub use dir::Dir;
8pub use version::Version;
9
10#[derive(Clone, Debug, Eq, Hash, PartialEq)]
12pub enum Toolchain {
13 Stable,
14 Unstable,
15 Beta,
16 Version(String),
17 Nightly,
18}
19
20impl FromStr for Toolchain {
21 type Err = anyhow::Error;
22
23 fn from_str(s: &str) -> Result<Self, Self::Err> {
24 Ok(match s {
25 "stable" => Self::Stable,
26 "unstable" => Self::Unstable,
27 "nightly" | "tip" | "gotip" => Self::Nightly,
28 "beta" => Self::Beta,
29 _ => Self::Version(s.to_owned()),
30 })
31 }
32}
33
34#[derive(Clone, Debug, Eq, Hash, PartialEq)]
36pub enum ToolchainFilter {
37 Stable,
38 Unstable,
39 Beta,
40 Filter(String),
41}
42
43impl FromStr for ToolchainFilter {
44 type Err = anyhow::Error;
45
46 fn from_str(s: &str) -> Result<Self, Self::Err> {
47 Ok(match s {
48 "stable" => Self::Stable,
49 "unstable" => Self::Unstable,
50 "beta" => Self::Beta,
51 _ => Self::Filter(s.to_owned()),
52 })
53 }
54}