úÎ None  We use the Mutable$ vector type to ensure injectivenessA concurrent ring buffer. *Atomically perform an action with the ring#Create a new ring of a given length'Reset the ringbuffer to its empty state"Add an item to the end of the ring^Add multiple items to the end of the ring This ignores any items above the length of the ring0The maximum number of items the ring can contain 0The maximum number of items the ring can contain %The current filled length of the ring%The current filled length of the ringÓExecute the given action with the items of the ring. Note that no references to the vector may leak out of the action as it will later be mutated. Moreover, the items in the vector are in no particular order.            ringb_6K3K3GEV9Pj8ZXCeo0GOKEData.RingBuffer RingBuffernewclearappendconcatcapacitylength withItemsRingMwithRing capacity'length' RingStateringFullringHead ringBuffer ringStateadvance