If /my/dir contains lots of directories and files, the initial scan might take a while and it's quite possible you managed to stop your command while it was still just reading the directory structure. Other than that, Ctrl+C does not provide you any undo capabilities.

You were lucky. The process has received an SIGINT, which (usually) kills the process. If you have not lost any data it is because the rm command was still busy traversing the directory structure, because it has to start deleting files in leaf directories without further subdirectories.