How can u burn own Tokens in MOVE

Lets assume that i create an own coin as a resource called myToken

How can u achieve a burn function?

Is this ok? (assume that I have

public burn(amount: u64) {
    let sender: address;
    let sender_token_ref: &mut R#Self.T;
    let value: u64;

    // Getting sender-accounts balance
    sender = get_txn_sender();
    sender_token_ref = borrow_global<T>(move(sender));
    value = *(&copy(sender_token_ref).value);

    // Make sure that sender has enough tokens, otherwise revert
    assert(copy(value) >= copy(amount), 1);

    // Reduce the senders tokens
    *(&mut move(sender_token_ref).value) = move(value) - copy(amount);

    return;
}

Additional:

Should I return something?

This is one way to burn. Another way is to take an owned instance of the resource to be burned and unpack it, as we do here.