docker_compose_spec 0.2.1

docker-compose.yml <-> rust <-> serde_json
Documentation
use crate::{ComposeService, Config, FieldKey, Network, Secret, Volume};

pub trait ComposeExt {
    fn name(&self) -> &str;
}

impl ComposeExt for (&FieldKey, &ComposeService) {
    fn name(&self) -> &str {
        self.1.container_name.as_ref().unwrap_or(self.0)
    }
}

impl ComposeExt for (&FieldKey, &Network) {
    fn name(&self) -> &str {
        self.1.as_ref().and_then(|v| v.name.as_ref()).unwrap_or(self.0)
    }
}

impl ComposeExt for (&FieldKey, &Volume) {
    fn name(&self) -> &str {
        self.1.as_ref().and_then(|v| v.name.as_ref()).unwrap_or(self.0)
    }
}

impl ComposeExt for (&FieldKey, &Secret) {
    fn name(&self) -> &str {
        self.1.name.as_ref().unwrap_or(self.0)
    }
}

impl ComposeExt for (&FieldKey, &Config) {
    fn name(&self) -> &str {
        self.1.name.as_ref().unwrap_or(self.0)
    }
}