* SPDX-License-Identifier: MIT */ declare(strict_types=1); namespace Respect\Validation\Rules; use Attribute; use Respect\Validation\Message\Template; use Respect\Validation\Result; use Respect\Validation\Rules\Core\FilteredNonEmptyArray; use function min; #[Attribute(Attribute::TARGET_PROPERTY | Attribute::IS_REPEATABLE)] #[Template('The minimum of', 'The minimum of')] final class Min extends FilteredNonEmptyArray { /** @param non-empty-array $input */ protected function evaluateNonEmptyArray(array $input): Result { $result = $this->rule->evaluate(min($input)); return $result->asAdjacentOf( Result::of($result->hasPassed, $input, $this), 'min', ); } }