DotNext by Roman Sakno

<PackageReference Include="DotNext" Version="3.2.0" />

 SpanReader<T>

public struct SpanReader<T>
public int ConsumedCount { get; }

public ReadOnlySpan<T> ConsumedSpan { get; }

public T& modreq(System.Runtime.InteropServices.InAttribute) Current { get; }

public int RemainingCount { get; }

public ReadOnlySpan<T> RemainingSpan { get; }

public ReadOnlySpan<T> Span { get; }

public SpanReader(ReadOnlySpan<T> span)

public SpanReader(ref T reference, int length)

public void Advance(int count)

public int Read(Span<T> output)

public T Read()

public ReadOnlySpan<T> Read(int count)

public TResult Read<TResult>(method reader, int count)

public ReadOnlySpan<T> ReadToEnd()

public void Reset()

public void Rewind(int count)

public bool TryRead(Span<T> output)

public bool TryRead(int count, out ReadOnlySpan result)

public bool TryRead(out T result)

public bool TryRead<TResult>(method reader, int count, out TResult result)