language_reporting

Trait RenderComponent

Source
pub trait RenderComponent<'args> {
    type Args;

    // Required method
    fn render(&self, args: Self::Args, into: Document) -> Document;
}
Expand description

This trait defines a renderable entity with arguments. Types that implement RenderComponent can be packaged up together with their arguments in a Component, and the Component is renderable.

§Example

#[macro_use]
extern crate render_tree;
extern crate termcolor;
use render_tree::{Document, Line, Render, RenderComponent};
use termcolor::StandardStream;

struct MessageContents {
    code: usize,
    header: String,
    body: String,
}

fn Message(args: MessageContents, into: Document) -> Document {
    into.add(tree! {
        <Line as {
            {args.code} ":" {args.header}
        }>

        <Line as {
            {args.body}
        }>
    })
}

fn main() -> std::io::Result<()> {
    let message = MessageContents {
        code: 200,
        header: "Hello world".to_string(),
        body: "This is the body of the message".to_string()
    };

    let document = tree! { <Message args={message}> };

    document.write()
}

Required Associated Types§

Required Methods§

Source

fn render(&self, args: Self::Args, into: Document) -> Document

Implementors§