Skip to content
Snippets Groups Projects
Commit 66fb4e31 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added unsafe

parent e8295363
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -360,37 +360,22 @@ fn main() {
1. On peut avoir autant de références **immutables** qu'on le shoutaire sur des données.
2. On ne peut avoir **une seule** référence mutable sur des données.
# `Unsafe` Rust
<!-- - `vector` et `string` sont alignés en mémoire.
- références "light".
- destruction déterministe. -->
## Toute règle est faite pour être contournée
<!-- ## Généralités
- Dans des cas particuliers, on doit pouvoir manipuler la mémoire de façon "dangereuse".
- Avec de grands privilèges viennent de grandes responsabilités: on doit pouvoir localiser **facilement** ces endroits dangereux.
- En bon Rust ils doivent être rares (4% du code de `rustc`).
- Exemple : `raw pointer`
- Fortement typé.
- Pas d'accès mémoire illégal.
- La désallocation est automatique.
- Les fuites de mémoires sont TRÈS difficiles à faire.
# Concurrence
- *Concurrency without fear*.
- Le système de type empêche un accès concurrent à des données.
- La synchronisation des données doit être explicitement faite.
- Détection si l'accès asynchrone est sûr à la compilation.
- Protection contre les accès concurrents.
## Rapidité
- Abstractions à coût nul (langage moderne **ET** efficace).
- Les conditions de sécurité sont gérées *à la compilation* (pas de coût à l'exécution).
- Le compilateur est basé sur la LLVM.
- On paie pour ce qu'on utilise seulement.
## On peut contourner les règles
- Le compilateur a des règles très strictes...
- ... mais il est possible de contourner les règles.
- Syntaxe spéciale pour autoriser les comportement potentiellement dangereux (`unsafe`{.lang-rust}).
- Un guide pour bien vivre dangereusement <https://doc.rust-lang.org/nomicon/>. -->
# And many more
- Error handling: `Option`, `Result`.
- Tests.
- Benchmarks (`nightly only`).
- *Hygienic* macros!.
- Cargo.
- `crates.io`
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment