Where raw field would contain a raw input string and fields protocol and request_path would contain a slices of a raw field, but I am struggling to tell the compiler what I intend. Is it even possible and if yes how?
This is not possible. A struct where one field has a reference to another field of the same struct is called self-referential, and these are not possible in safe Rust. You could store a Range<usize> and look up in raw when you want the data.