use super::{HarnessName, HarnessWord};
use crate::bounded::Overflow;
use crate::token::{GeneratedToken, call};
#[must_use]
pub fn path(segments: &[HarnessName]) -> Vec<GeneratedToken> {
let spelled: Vec<&str> = segments.iter().map(|segment| segment.spelling()).collect();
crate::support::rooted_path(crate::support::CrateFacing::Harness, &spelled)
}
pub fn road(
segments: &[HarnessName],
arguments: Vec<GeneratedToken>,
) -> Result<Vec<GeneratedToken>, Overflow> {
call(path(segments), arguments)
}
#[must_use]
pub fn key(word: HarnessWord) -> Vec<GeneratedToken> {
vec![
GeneratedToken::word(word.spelling()),
GeneratedToken::alone(':'),
]
}