// Generated by Lisette bindgen
// Source: container/ring (Go stdlib)
// Go: 1.25.10
// Lisette: 0.2.1
/// New creates a ring of n elements.
pub fn New(n: int) -> Ref<Ring>
/// A Ring is an element of a circular list, or ring.
/// Rings do not have a beginning or end; a pointer to any ring element
/// serves as reference to the entire ring. Empty rings are represented
/// as nil Ring pointers. The zero value for a Ring is a one-element
/// ring with a nil Value.
pub struct Ring {
pub Value: Unknown,
}
impl Ring {
/// Do calls function f on each element of the ring, in forward order.
/// The behavior of Do is undefined if f changes *r.
fn Do(self: Ref<Ring>, f: fn(Unknown) -> ())
/// Len computes the number of elements in ring r.
/// It executes in time proportional to the number of elements.
fn Len(self: Ref<Ring>) -> int
/// Link connects ring r with ring s such that r.Next()
/// becomes s and returns the original value for r.Next().
/// r must not be empty.
///
/// If r and s point to the same ring, linking
/// them removes the elements between r and s from the ring.
/// The removed elements form a subring and the result is a
/// reference to that subring (if no elements were removed,
/// the result is still the original value for r.Next(),
/// and not nil).
///
/// If r and s point to different rings, linking
/// them creates a single ring with the elements of s inserted
/// after r. The result points to the element following the
/// last element of s after insertion.
fn Link(self: Ref<Ring>, s: Ref<Ring>) -> Ref<Ring>
/// Move moves n % r.Len() elements backward (n < 0) or forward (n >= 0)
/// in the ring and returns that ring element. r must not be empty.
#[allow(unused_value)]
fn Move(self: Ref<Ring>, n: int) -> Ref<Ring>
/// Next returns the next ring element. r must not be empty.
fn Next(self: Ref<Ring>) -> Ref<Ring>
/// Prev returns the previous ring element. r must not be empty.
fn Prev(self: Ref<Ring>) -> Ref<Ring>
/// Unlink removes n % r.Len() elements from the ring r, starting
/// at r.Next(). If n % r.Len() == 0, r remains unchanged.
/// The result is the removed subring. r must not be empty.
fn Unlink(self: Ref<Ring>, n: int) -> Ref<Ring>
}