let move ?ignore_strange ?symlinks ?buffer_size ?if_exists ~src dst =
move_in_same_device ?if_exists ~src dst
>>= begin function
| `Moved -> return ()
| `Must_copy ->
copy ~src ?buffer_size ?ignore_strange ?symlinks ?if_exists dst
>>= fun () ->
remove src
end