Skip to content

Commit 239c41b

Browse files
committed
Switch to using pure binaries
1 parent 478f9bb commit 239c41b

File tree

1 file changed

+6
-7
lines changed

1 file changed

+6
-7
lines changed

lib/elixir/lib/string.ex

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -836,14 +836,13 @@ defmodule String do
836836
@spec ends_with?(t, t | [t]) :: boolean
837837

838838
def ends_with?(string, suffixes) when is_list(suffixes) do
839-
string_len = String.length(string)
840-
Enum.any? suffixes,
841-
fn suffix ->
842-
len = String.length(suffix)
843-
suffix == String.slice(string, string_len - len, len)
844-
end
839+
string_size = size(string)
840+
Enum.any? suffixes, fn suffix ->
841+
suffix_size = size(suffix)
842+
(suffix_size <= string_size) and suffix == :binary.part(string, {string_size, -size(suffix)})
843+
end
845844
end
846845

847-
def ends_with?(string, suffix), do: __MODULE__.ends_with?(string, [ suffix ])
846+
def ends_with?(string, suffix), do: ends_with?(string, [ suffix ])
848847

849848
end

0 commit comments

Comments
 (0)