"Covers a given range r in a random manner, i.e. goes through each element of r once and only once, just in a random order. r must be a forward access range with length." Reading the source code, it's clear that RandomCover really needs random access: ref ElementType!(Range) front() { return _input[_current]; } --