Lazy line-by-line text file reader in Elixir

Elixir
defmodule FileLines do
  def each_line(path, fun) do
    path
    |> File.stream!([], :line)
    |> Stream.map(&String.trim_trailing/1)
    |> Stream.each(fun)
    |> Stream.run()
  end

  def take_lines(path, count) do
    path
    |> File.stream!([], :line)
    |> Stream.map(&String.trim_trailing/1)
    |> Enum.take(count)
  end
end