This @= is the .dup protocol @= would copy, while the = is most usually a reference assign when that is possible. If you have a regular method of clone which is a protocol for most all things who agree to use it, then = for assign by reference is more fair