Question about how message function generate mailbox

Thank you for your answer!
I am confused about how the message function generate mailbox. In the user guide, I am told that message function like u_mul_v(‘h1’,‘h2’,‘m’) will put the feature in the edge feature field, which means I can get the result ‘m’ in g.edata[‘m’]. But other message function seems to store ‘m’ in the mailbox, i.e. copy_u.
So I wonder whether the output field varies between different message function, or it would put the result ‘m’ in edge feature field and mailbox at the meantime.

'out' is always available for message functions in dgl.function such as dgl.function.copy_u — DGL 0.8 documentation do you mean this one?
BTW, pls be aware of the relation between dgl.function and dgl.ops. refer to dgl.ops — DGL 0.8 documentation for more details.