package com.codepoetics.octarine.records;
import org.pcollections.PVector;
import org.pcollections.TreePVector;
import java.util.Arrays;
import java.util.Collection;
public interface ListKey<T> extends Key<PVector<T>> {
static <T> ListKey<T> named(String name, Value...metadata) {
return named(name, Record.of(metadata));
}
static <T> ListKey<T> named(String name, Record metadata) {
return new Impl<T>(name, metadata);
}
static final class Impl<T> extends BaseKey<PVector<T>> implements ListKey<T> {
Impl(String name, Record metadata) {
super(name, metadata);
}
}
default Value of(Collection<? extends T> values) {
return of(TreePVector.from(values));
}
@SuppressWarnings("unchecked")
default Value of(T... values) {
return of(Arrays.asList(values));
}
}