tmr-cargo 0.6.0

Give me more instruments!
Documentation
use serde::Serialize;

use crate::ToToml;

pub mod package;

#[derive(Serialize)]
pub struct Members(Vec<Member>);

impl From<Vec<&str>> for Members {
    fn from(members: Vec<&str>) -> Self {
        Self(
            members
                .into_iter()
                .map(|member| Member(member.to_string()))
                .collect(),
        )
    }
}

impl From<&[&str]> for Members {
    fn from(members: &[&str]) -> Self {
        Self(
            members
                .iter()
                .map(|member| Member(member.to_string()))
                .collect(),
        )
    }
}

impl ToToml for Members {}

#[derive(Serialize)]
pub struct Member(String);

impl ToToml for Member {}

#[derive(Serialize)]
pub struct Excludes(Vec<Exclude>);

impl From<Vec<&str>> for Excludes {
    fn from(excludes: Vec<&str>) -> Self {
        Self(
            excludes
                .into_iter()
                .map(|exclude| Exclude(exclude.to_string()))
                .collect(),
        )
    }
}

impl From<&[&str]> for Excludes {
    fn from(excludes: &[&str]) -> Self {
        Self(
            excludes
                .iter()
                .map(|exclude| Exclude(exclude.to_string()))
                .collect(),
        )
    }
}

impl ToToml for Excludes {}

#[derive(Serialize)]
pub struct Exclude(String);

impl ToToml for Exclude {}

pub enum Resolver {
    V1,
    V2,
}

impl Serialize for Resolver {
    fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
        match self {
            Resolver::V1 => "1".serialize(serializer),
            Resolver::V2 => "2".serialize(serializer),
        }
    }
}

impl TryFrom<&str> for Resolver {
    type Error = ();

    fn try_from(resolver: &str) -> Result<Self, Self::Error> {
        match resolver {
            "1" => Ok(Self::V1),
            "2" => Ok(Self::V2),
            _ => Err(()),
        }
    }
}

impl ToToml for Resolver {}