Consuming a character reference can only ever yield 0, 1, or 2 characters. Handling that specially will let you skip an allocation, which may be useful. Since the `html::entity::lookup()` function wants to return a `&'static str` (which seems reasonable; defining a custom enum for that isn't a great API), then you could handle this with an enum that looks like

```rust
enum UnescapedEntity {
    EntityStr(&'static str),
    EntityCharOne(char),
    EntityCharTwo(char, char)
}
```

Speaking of `html::entity::lookup()`, since I can't put comments on that file (as it's too large), `lookup()` really needs a doc comment.