W0042 - Equality check with unnecessary operator
Warning
fn(A, Same, Diff) ->
   case A =:= foo of
%%      ^^^^^^^^^💡 weak: Consider rewriting to an equality match.
     true -> Same;
     _ -> Diff
   end.
fn(A, Same, Diff) ->
   case A =/= foo of
%%      ^^^^^^^^^💡 weak: Consider rewriting to an equality match.
     false -> Same;
     true -> Diff
   end.
fn(A, Same, Diff) ->
   if A =:= foo -> Same;
%%    ^^^^^^^^^💡 weak: Consider rewriting to an equality match.
      true -> Diff
   end.
Explanation
The warning message indicates an unidiomatic way to express a structural equality check.
To fix this warning, replace the use of the =:= operator and subsequent
check of the result with a direct use of an equality pattern:
fn(A, Same, Diff) ->
   case A of
     foo -> Same;
     _ -> Diff
   end.
Notes
We do not offer rewrites where the pattern would end up being a bare variable.
For example, the following code is not rewritten:
fn(A, B, Same, Diff) ->
   case A =:= B of
     true -> Same;
     _ -> Diff
   end.
Since the resulting pattern would be a bare variable, e.g. B in:
fn(A, B, Same, Diff) ->
   case A of
     B -> Same;
     _ -> Diff
   end.
Subsequent refactorings might then rename B, changing the pattern from
an equality check to a new binding, with potentially subtle and confusing results.
We want to avoid introducing dangerous patterns like this.