the input range to drop from
the number of elements to drop
range with up to n elements dropped
import std.algorithm.comparison : equal; auto a = [0, 2, 1, 5, 0, 3]; assert(a.drop(3) == [5, 0, 3]); assert(a.length == 6); // original unchanged assert("hello world".drop(6) == "world"); assert("hello world".drop(50).empty); assert("hello world".take(6).drop(3).equal("lo "));
import std.algorithm.comparison : equal; assert([0, 2, 1, 5, 0, 3].dropBack(3) == [0, 2, 1]); assert("hello world".dropBack(6) == "hello"); assert("hello world".dropBack(50).empty); assert("hello world".drop(4).dropBack(4).equal("o w"));
drop is a convenience function which calls std.range.primitives.popFrontN(range, n) and returns range. Unlike popFrontN, the range argument is passed by copy, not by ref.
drop makes it easier to pop elements from a range rvalue and then pass it to another function within a single expression, whereas popFrontN would require multiple statements.
dropBack provides the same functionality but instead calls std.range.primitives.popBackN(range, n)
Note: drop and dropBack will only pop up to n elements but will stop if the range is empty first. In other languages this is sometimes called skip.