// Package bytesx implements bytes extensions.
package bytesx import // ResetReader implements the io.Reader reading from a resettable byte slice. type ResetReader struct { buf []byte head int tail int } // NewResetReader returns a new ResetReader reading from b. func ( []byte) *ResetReader { := &ResetReader{} .Reset() return } // Read reads bytes into p. func ( *ResetReader) ( []byte) (int, error) { if .head == .tail { return 0, io.EOF } := copy(, .buf[.head:]) .head += return , nil } // Reset resets the byte slice being read from. func ( *ResetReader) ( []byte) { .buf = .head = 0 .tail = len() }