public static bool Peek <T>(this ICapture <T> segment, out T value) { // growing parent segements is the responsibility of the parent segement if (!segment.CanGrow()) { value = default; return(false); } // calculate the index of the parent where the peek element is located var index = segment.Count + segment.Offset; value = segment.Parent[index]; return(true); }
public static bool Grow <T>(this ICapture <T> segment) { // we can only grow child segments if (!segment.CanGrow()) { return(false); } if (segment.IsReadOnly) { return(false); } segment.Count++; return(true); }