Since it is not possible to take a owned slice of Vec from original Vec without copying, current implementation of slicing works by copying the inner items. This can be optimized by creating a new type similar to Vec that maintains the root-pointer of allocation along with the data pointer.