Résumé :

  • Rendus individuels
  • Communication et questions autorisées et encouragées
  • Rendez que du code source et des fichiers de configuration/boilerplate
  • Faites un commit et un push au moins une fois par exercice
  • En plus de devoir compiler correctement avec cargo check, vous devez aussi ne pas avoir d’avertissement lorsque vous faites la commande cargo clippy
  • Respectez la norme, utilisez le formatage autoamtique

La réalisation de cet exercice est assujettie aux règles en vigueur dans l’école en matière de triche et de normalisation. Tricher vous expose à de graves sanctions.

Normalisation

Vous devez respecter les règles de normalisation suivantes : https://doc.rust-lang.org/beta/style-guide/. Votre éditeur de code peut-être configuré pour les respecter automatiquement. La commande cargo fmt permet de formater le code du dépôt courant en suivant ces règles.

En plus de ces règles vous devez respecter celles-ci :

  • L’utilisation d’unwrap est interdite.
  • L’utilisation d’expect est interdite.
  • Renvoyer un Vec vide est interdit, le but est d’éviter l’utilisation d’un Vec à la place d’Option, si vous n’avez pas d’éléments renvoyez Option::None.

Votre code sera également jugé sur sa lisibilité et la facilité de comprendre son métier.

Doivent être en anglais tous vos symboles et commentaires.

Les fautes de normes sont comptabilisées par ligne contenant une ou plusieurs erreurs. Si le code n’est pas formaté et que le formatage modifie le nombre de lignes, on conserve le plus grand nombre de lignes incorrectes, que ce soit avant ou après le formatage.

Instructions de rendu

Respectez à la lettre les noms de fichiers et leur emplacement dans le dépôt de rendu. S’il vous est demandé de rendre un fichier nommé hello.rs sans qu’un nom de dossier soit précisé : rendez un fichier hello.rs à la racine de votre dépôt. La présence d’une étoile * signifie que le nom du fichier peut être n’importe lequel dès lors qu’il porte l’extension ou l’affixe (préfixe/suffixe) demandée. Elle signifie aussi qu’il est possible de rendre plusieurs fichiers. La présence d’une double étoile ** signifie que les fichiers peuvent être placés n’importe où dans un dossier, y compris dans des sous-dossiers.

Pensez à faire des commits et des push fréquemment. Autrement nous ne pouvons pas vous aider à retrouver vos fichiers perdus.

Exemples de fichiers autorisés :

  • src/**/*.rs
  • Cargo.{toml,lock}
  • .editorconfig
  • .gitignore

Exemples de fichiers interdis :

  • fichier exécutables
  • target/

Tests

Chaque fois que vous devez rendre une fonction, vous devez aussi écrire ses tests unitaires dans un sous module. Pensez aux cas normaux et aux cas spéciaux.

Exécutez vos tests unitaires avec cargo test.

#[cfg(test)]
mod test {
	use super::ma_fonction;

	#[test]
	fn ma_fonction_1() {
		// votre premier test, à coup de assert/assert_eq
	}

	#[test]
	fn ma_fonction_2() {
		// votre second test
	}
}

Correction du code source en rust

Tout le code source sera compilé dans le cadre d’un projet Cargo. La compilation et les avertissements seront vérifiés avec :

  • cargo check
  • cargo clippy

Les programmes seront exécutés avec cargo run --bin nom_du_programme. Les fonctions seront vérifiées via leurs tests unitaires grâce à cargo test.

Lorsque vous rendez une fonction, vous ne pouvez gagner des points que pour les fonctionnalité dont vous démontrez le bon état de marche à l’aide d’un test unitaire. Sans test unitaire, on considère que vous n’avez pas réussi la fonction.