Enumerable provides a large set of useful methods for enumerations or collections of values. It is a core module that allows objects to be iterated over. Enumerable provides aliases for some methods and optimized versions for common use cases like invoking the same method on each element or fetching the same property from each element. To use Enumerable, an object just needs to provide an _each method that iterates over its elements.