use std::sync::Arc;
use crate::TaskId;
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum TaskTarget {
Id(TaskId),
Name(Arc<str>),
}
impl From<TaskId> for TaskTarget {
fn from(id: TaskId) -> Self {
Self::Id(id)
}
}
impl From<Arc<str>> for TaskTarget {
fn from(name: Arc<str>) -> Self {
Self::Name(name)
}
}
impl From<&Arc<str>> for TaskTarget {
fn from(name: &Arc<str>) -> Self {
Self::Name(Arc::clone(name))
}
}
impl From<Box<str>> for TaskTarget {
fn from(name: Box<str>) -> Self {
Self::Name(Arc::from(name))
}
}
impl From<String> for TaskTarget {
fn from(name: String) -> Self {
Self::Name(Arc::from(name))
}
}
impl From<&String> for TaskTarget {
fn from(name: &String) -> Self {
Self::Name(Arc::from(name.as_str()))
}
}
impl From<&str> for TaskTarget {
fn from(name: &str) -> Self {
Self::Name(Arc::from(name))
}
}