Из того, что в принципе в документации есть, но так с ходу не заметишь.
если do_foo() случайно вернуло ерунду, а не нужный record, то без проверки = #state{} оно заметится только на следующем цикле, а это немного не то, что нужно:)
Аналогично можно сделать function clause на входе:
(Альтернатива в виде dialyzer тяжеловата, мягко говоря, и не во всех случаях.)
handle_info(foo, State) ->
NewState = #state{} = do_foo(State),
{noreply, NewState};
если do_foo() случайно вернуло ерунду, а не нужный record, то без проверки = #state{} оно заметится только на следующем цикле, а это немного не то, что нужно:)
Аналогично можно сделать function clause на входе:
do_foo(#state{} = State) ->
(Альтернатива в виде dialyzer тяжеловата, мягко говоря, и не во всех случаях.)