Ответ 1
Короткий ответ: вы не можете.
Долгий ответ заключается в том, что вы можете определить макросы, и они будут работать в охранниках, если они сделаны из действительных выражений гвардейцев. Но для сложных охранников это нетривиально, поэтому лучше избегать, если вам действительно не нужно.
Список действительных охранников можно найти в руководстве по началу работы: http://elixir-lang.org/getting-started/case-cond-and-if.html#expressions-in-guard-clauses
Пример реализации "сложного" защитного макроса можно найти в источнике Elixir: https://github.com/elixir-lang/elixir/blob/5d34fcdccd20bf38c4f2a13f8adeb78e22b4e74c/lib/elixir/lib/kernel.ex#L1574