def assign(destination, source):
    """
    Assign one dict to the other through mutations

    Roughly put, ``destination := source``. More formally, after the call,
    ``destination == source`` is true and ``id(destination)`` is unchanged.

    Parameters
    ----------
    destination : dict
        dict to assign to
    source : dict
        dict to assign from

    Examples
    --------
    >>> import chicken_turtle_util.dict as dict_
    >>> destination = {1: 2, 3: 4}
    >>> source = {3: 5, 6: 7}
    >>> dict_.assign(destination, source)
    >>> assert destination == {3: 5, 6: 7} 
    """
    for key in (destination.keys() - source.keys()):
        del destination[key]
    for key, value in source.items():
        destination[key] = value
