term-rustdoc 0.2.0

A TUI for Rust docs.
Documentation
use super::Format;
use crate::{
    tree::IDMap,
    type_name::{fn_decl, fn_header, generics},
};
use rustdoc_types::{Function, Visibility};
use std::fmt::Write;

impl Format for Function {
    fn parse(&self, v: &Visibility, fname: &str, _: &IDMap) -> String {
        let Function {
            decl,
            generics: g,
            header,
            ..
        } = self;

        let mut buf = super::buf(v);
        fn_header(header, &mut buf);
        buf.push_str("fn ");
        buf.push_str(fname);
        let (def, where_) = generics(g);
        if let Some(def) = &def {
            write!(buf, "<{def}>").unwrap();
        }
        fn_decl(decl, &mut buf);
        if let Some(where_) = &where_ {
            write!(buf, "\nwhere\n{where_}").unwrap();
        }
        buf
    }
}