use std::fmt;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct FunctionSignatureDoc {
pub full_name: String,
pub args: Vec<String>,
pub result: String,
}
impl fmt::Display for FunctionSignatureDoc {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let r = write!(f, "{}({})", self.full_name, self.args.join(", "));
if !self.result.is_empty() {
write!(f, " -> {}", self.result)?;
}
r
}
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct FunctionDoc {
pub signature: FunctionSignatureDoc,
pub summary: Option<String>,
pub description: String,
pub examples: Option<String>,
}
impl fmt::Display for FunctionDoc {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}\n\n{}", self.signature, self.description)
}
}