Lindenii Project Forge
Login

server

Lindenii Forge’s main backend daemon
Commit info
ID
38b24afcb653da88765c99049f850c3ec7e234db
Author
Runxi Yu <me@runxiyu.org>
Author date
Sat, 05 Apr 2025 23:22:51 +0800
Committer
Runxi Yu <me@runxiyu.org>
Committer date
Sat, 05 Apr 2025 23:22:51 +0800
Actions
misc: Move IterSeqLimit to misc
// SPDX-License-Identifier: AGPL-3.0-only
// SPDX-FileCopyrightText: Copyright (c) 2025 Runxi Yu <https://runxiyu.org>

package forge
package misc

import "iter"

// iterSeqLimit returns an iterator equivalent to the supplied one, but stops
// after n iterations.
func iterSeqLimit[T any](s iter.Seq[T], n uint) iter.Seq[T] {
func IterSeqLimit[T any](s iter.Seq[T], n uint) iter.Seq[T] {
	return func(yield func(T) bool) {
		var iterations uint
		for v := range s {
			if iterations > n-1 {
				return
			}
			if !yield(v) {
				return
			}
			iterations++
		}
	}
}