Is there a library that provides destructive version of `Array#first` and `Array#last`? if not, what is the most efficient way to implement them? Something like this:

```
a = [:a, :b, :c, :d, :e]
a.first!(2) # => [:a, :b]
a # => [:c, :d, :e]
a.last!(1) # => [:e]
a # => [:c, :d]

```