Skip to main content

Render

pub trait Render<T> {
    // Required method
    fn render(data: &T) -> Result<String, ViewRenderError>;
}
Expand description

Trait for rendering command output data into a string.

Implementors transform a DTO (T) into a displayable or parseable string. The Result return type is required even for infallible renderers (e.g., TextView) so that all renderers share a uniform interface and callers can use ? unconditionally.

§Examples

use crate::presentation::cli::views::{Render, ViewRenderError};

// JSON view — calls serde_json, theoretically fallible
impl Render<ConfigureDetailsData> for JsonView {
    fn render(data: &ConfigureDetailsData) -> Result<String, ViewRenderError> {
        Ok(serde_json::to_string_pretty(data)?)
    }
}

// Text view — pure string formatting, always Ok
impl Render<ConfigureDetailsData> for TextView {
    fn render(data: &ConfigureDetailsData) -> Result<String, ViewRenderError> {
        Ok(format!("Configuration completed for '{}'", data.environment_name))
    }
}

Required Methods§

Source

fn render(data: &T) -> Result<String, ViewRenderError>

Render data into a string representation.

§Errors

Returns a ViewRenderError if rendering fails. Text renderers always return Ok; JSON renderers return Err only if serialization fails (which is unreachable for plain #[derive(Serialize)] types).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Render<ConfigureDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::configure::views::json_view::JsonView

Source§

impl Render<ConfigureDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::configure::views::text_view::TextView

Source§

impl Render<DestroyDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::destroy::views::json_view::JsonView

Source§

impl Render<DestroyDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::destroy::views::text_view::TextView

Source§

impl Render<EnvironmentDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::create::views::json_view::JsonView

Source§

impl Render<EnvironmentDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::create::views::text_view::TextView

Source§

impl Render<EnvironmentInfo> for torrust_tracker_deployer_lib::presentation::cli::views::commands::show::views::JsonView

Source§

impl Render<EnvironmentInfo> for torrust_tracker_deployer_lib::presentation::cli::views::commands::show::views::TextView

Source§

impl Render<EnvironmentList> for torrust_tracker_deployer_lib::presentation::cli::views::commands::list::views::json_view::JsonView

Source§

impl Render<EnvironmentList> for torrust_tracker_deployer_lib::presentation::cli::views::commands::list::views::text_view::TextView

Source§

impl Render<ExistsResult> for torrust_tracker_deployer_lib::presentation::cli::views::commands::exists::views::json_view::JsonView

Source§

impl Render<ExistsResult> for torrust_tracker_deployer_lib::presentation::cli::views::commands::exists::views::text_view::TextView

Source§

impl Render<ProvisionDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::provision::views::json_view::JsonView

Source§

impl Render<ProvisionDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::provision::views::text_view::TextView

Source§

impl Render<PurgeDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::purge::views::json_view::JsonView

Source§

impl Render<PurgeDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::purge::views::text_view::TextView

Source§

impl Render<RegisterDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::register::views::json_view::JsonView

Source§

impl Render<RegisterDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::register::views::text_view::TextView

Source§

impl Render<ReleaseDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::release::views::json_view::JsonView

Source§

impl Render<ReleaseDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::release::views::text_view::TextView

Source§

impl Render<RenderDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::render::views::json_view::JsonView

Source§

impl Render<RenderDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::render::views::text_view::TextView

Source§

impl Render<RunDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::run::JsonView

Source§

impl Render<RunDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::run::TextView

Source§

impl Render<TestResultData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::test::views::json_view::JsonView

Source§

impl Render<TestResultData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::test::views::text_view::TextView

Source§

impl Render<ValidateDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::validate::views::json_view::JsonView

Source§

impl Render<ValidateDetailsData> for torrust_tracker_deployer_lib::presentation::cli::views::commands::validate::views::text_view::TextView