---
- name: Check if ~/.cargo exists
  stat:
    path: ~/.cargo
  register: cargo_dir

- name: Uninstall rustup if installed without package manager
  command: rustup self uninstall
  when: cargo_dir.stat.exists

- name: Install rust (Archlinux)
  become: true
  pacman:
    name:
      - rustup
  when: ansible_distribution == 'Archlinux'

- name: Install rust (Debian)
  become: true
  apt:
    name:
      - rustup
  when: ansible_distribution == 'Debian'

- name: Setup rustup stable
  command: rustup default stable
  register: result
  changed_when: "'using existing install' not in result.stderr"