I think instead of a mutable GeminiRespone, add that not_found() (and subsequently new response types) into GeminiResponse impl and construct one when needed. And then, for consistency, GeminiResponse::new() should become GeminiReponse::success().
This is a great idea. Thanks a lot for the feedback.
Great job! I actually started reading the source code.