Printing for Custom Types ======================== {{#include ../links.md}} To use custom types for [`print`] and [`debug`], or convert its value into a [string], it is necessary that the following functions be registered (assuming the custom type is `T: Display + Debug`): | Function | Signature | Typical implementation | Usage | | ----------- | ---------------------------------------------- | ---------------------------- | -------------------------------------------------------------------- | | `to_string` | \|x: &mut T\| -> String | `x.to_string()` | converts the custom type into a [string] | | `print` | \|x: &mut T\| -> String | `x.to_string()` | converts the custom type into a [string] for the [`print`] statement | | `debug` | \|x: &mut T\| -> String | `format!("{:?}", x)` | converts the custom type into a [string] for the [`debug`] statement | | `+` | \|s: &str, x: T\| -> String | `format!("{}{}", s, x)` | concatenates the custom type with another [string] | | `+` | \|x: &mut T, s: &str\| -> String | `x.to_string().push_str(s);` | concatenates another [string] with the custom type | | `+=` | \|s: &mut ImmutableString, x: T\| | `s += x.to_string()` | appends the custom type to an existing [string] |