249 private links
Microsoft's decision to investigate Rust (and other languages) began due to the fact that roughly 70% of Common Vulnerabilities and Exposures (CVEs) in Microsoft products were related to memory safety issues in C and C++.
Un résumé sur la programmation d'un exécuteur Rust de code JS.
Et le gars, il écrit du code JS analysé et parsé en Rust. Pour ensuite produire du code WebAssembly et ếtre exécuté en tant que code JS importé grâce à WebAssembly. <3
Et la différence entre .iter() et .into_inter()
.iter() emprunte les valeurs (itération sur les valeurs par référence) de la structure
.into_iter() à l'opposé devient propriétaire des valeurs
Dupliquer un nombre z d'élément de la collection x dans un vecteur y :
let y = x
.iter()
.map(|i| i.clone()) // Or use .cloned() instead since Rust 1.1
.take(z)
.collect::<Vec<_>>();
Excellente explication sur les lifetimes en rust
Une drôle d'histoire !
Je pose ça en réserve
edit 2024: déjà en train de partager à propos de Rust :)
Rendre son code Rust plus idiomatique <3
- returning values
unimplemented!()
/unreachable!()
option.as_ref().unwrap()
map.entry(key).or_insert_with(Vec::new).push(val);
let numbers: Vec<_> = (0..10).collect();
elements.iter().cloned()
list.iter().enumerate()
(like python)_
for unused variables
Un point de vue sur Rust
Un projet pertinent à surveiller.
Avec la vidéo expliquant le projet (+ des trucs sur Rust). Une base de donnée plus rapide !
La solution au problème de lenteur des verrous semble prometteuse. Je l'aime bien
Ou pourquoi s'intéresser à Rust <3
Chaque paragraphe suscite l'envie d'apprendre le langage
Compte rendu du choix de Rust comme langage de développement pour les CPU-bound bottlenecks de npm.
Rust expliqué pour des programmeurs en haut niveau style JS.
Mémo
- on peut faire comme en python et surcharger l'opérateur "+" avec le trait Add. C'est aussi possible avec les autres opérateurs.
- le mot-clé type permet de créer des alias :
type Int = i32;
permet de déclarer des variables de cette façon :let number: Int = 10;
. Int sera remplacé par i32. On peut donc imaginer des alias pour un type devant implémenter un ou plusieurs traits. Par exemple,type proxy = box<? impl Debug + >
à tout hasard. L'exemple n'est pas top, mais rien ne me vient à l'idée. TODO: à améliorer. let mul = | a , b | a * b;
est équivalent àfn mul (a: i32, b: i32) -> i32 { a * b }
ou dans sa version plus typélet mul = |a: int32, b: int32 | -> i32 { a * b };
Note : a et b dans la closure doivent implémenter l'opérateur "*" mais ne sont pas obligatoirement de typei32
Propre.
La recommandation est de créer un bloc impl
pour les méthodes et un autre pour les fonctions liées à la structure. Cela afin de bien les séparer.
Une méthode prend en paramètre un référence à l'objet (généralement &self
, il s'agit ici d'un emprunt car on veut généralement continuer à utiliser l'objet après l'appel à la méthode).
Une fonction liée à la structure ne prend pas de référence, elle est indépendante.
Une explication claire et précise en français sur les concepts de base du langage
Un raccourci bien pratique lors de la création de structures; surtout lorsqu'on y est habitué avec JS et TS
A l'établissement d'une première connexion RusTLS est 10% plus rapide qu'OpenSSL, de 20 à 40% plus rapide lors d'une nouvelles connexion client... et il fait encore mieux sur des sessions pour lesquelles il y a déjà eu une négociation TLS préalable : de 10 à 20% pour la reprise d'une session serveur et de 30 à 70% pour la reprise d'une session client. Côté transfert de données, même constat car toujours selon Joseph Birr-Pixton, l'envoi de données est 15% plus rapide et la réception 5% plus rapide. Cerise sur le gateau, RustTLS se montre moitié moins gourmand en mémoire.
<3
En python, les programmeurs s'appellent des pythonistes.
Cependant en Rust, il n'y a pas de traduction française, seulement Rustaceans. Un jeu de mots avec crustacean qui veut dire crustacé. Je propose alors Rustacé pour nommer des programmeurs en langage Rust.