---
title: Explanation
description: Why rtb-error is shaped the way it is, with no error handler, a set-once hook wrapped for mutability, and what it deliberately does not do.
tags: [explanation]
---
# Explanation
Background and reasoning. Nothing here is needed to use the crate; all of it
is needed to understand why it behaves the way it does.
| [Errors are values, not handled events](01-errors-are-values.md) | Why there is no `ErrorHandler`, no `.check()`, and no central error funnel |
| [Why the hook is installed once and the footer is not](02-why-the-hook-is-installed-once.md) | Why a wrapper handler exists at all, and why installing early matters so much |
| [What rtb-error does not do](03-what-this-does-not-do.md) | The deliberate absences, the unsupported combinations, and what to use instead |
There is a companion blog post,
[Errors without an error handler](https://phpboyscout.uk/errors-without-an-error-handler/),
which tells the same story as a narrative about porting go-tool-base to Rust.
It is opinion and history rather than documentation; these pages are the
documentation.