Bitstring specifier macros

I’ve just come across a library that had import Foo.BinaryUtils, warn: false peppered through it. That looked like a code smell so I started investigating. It turned out this module had macros in it used for bitstring specifiers, e.g.:

  defmacro uint do
    quote do: little - unsigned - 16
  end

  defmacro udint do
    quote do: little - unsigned - 32
  end

And these are used like so:

<<foo::uint(), bar::udint(), rest::binary>>

My question is why does this not work with require? Shouldn’t it? The library authors used warn: false because the module only contains these macros, and elixirc complains that the import is not used otherwise.