mirror of
https://github.com/jimeh/go-render.git
synced 2026-02-19 11:26:39 +00:00
29 lines
556 B
Go
29 lines
556 B
Go
package render
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
// WriterTo is a renderer that renders a value to an io.Writer using the
|
|
// WriteTo method.
|
|
type WriterTo struct{}
|
|
|
|
var _ Renderer = (*WriterTo)(nil)
|
|
|
|
// Render renders a value to an io.Writer using the WriteTo method. If the value
|
|
// does not implement io.WriterTo, ErrCannotRender is returned.
|
|
func (wt *WriterTo) Render(w io.Writer, v any) error {
|
|
x, ok := v.(io.WriterTo)
|
|
if !ok {
|
|
return ErrCannotRender
|
|
}
|
|
|
|
_, err := x.WriteTo(w)
|
|
if err != nil {
|
|
return fmt.Errorf("%w: %w", Err, err)
|
|
}
|
|
|
|
return nil
|
|
}
|