IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Rust Discussion :

Rust 1.19 est disponible en version stable


Sujet :

Rust

  1. #41
    Membre expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 493
    Points : 3 872
    Points
    3 872
    Billets dans le blog
    8
    Par défaut


    Tout comme les variantes de l'enum Option<T>: Some(T) et None sont parfaitement comprises par le compilateur.

    Sans expliciter la provenance des variantes ça donne:

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fn main() {
        let foo = Some("Hello there!".to_owned());
        let bar = match foo{
            Some(content) => content,
            None => "Nothing, here.".to_owned(),
        };
        println!("bar={}", &bar);
    }

    Ce sont de petites subtilités, mais vraiment rien d'insurmontable. Ce ne sont pas des ressources "magiques", juste des raccourcis.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

  2. #42
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    @mh-cbon
    Eh bien moi c'est la deuxième fois que je me penche sur ce language.la première fois je l'ai trouvé trop complexe moi aussi.
    Rien à voir avec les typages forts parce que je fais du JEE du C. Ni les typages faibles, car je ne suis pas trop mauvais en python.
    Eh bien pour une deuxième fois, je commence à l'apprécier, et je crois qu'il vaut vraiment le coup.

    La syntaxe est une chose, lorsqu'on a commencé à la comprendre il faut ensuite l'adopter. Une fois ce cap passé on peut profiter de sa richesse.

  3. #43
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Je peux te filer un lien avec des exos pour pratiquer :
    http://exercism.io/
    mais avant il faut se taper de la doc, ce n'est pas un language simple.
    Voici un tutoriel en français sur ce site.
    http://guillaume-gomez.developpez.co...re-bases-rust/

    Sinon il y a la doc officielle !

  4. #44
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Bonjour tralloc,

    C'est super de chercher à aider les autres :-).

    Je voulais juste me permettre de te signaler un point :-p :
    Tu as écrit « Ni les typages faibles, car je ne suis pas trop mauvais en python », or Python a un typage fort, en effet tu confonds typage statique et dynamique mais les trois langages ont des typages fort.

    Des langages qui auraient des typages faibles sont par exemple : PHP, Javascript ou Ring.

    Ne travaille pas en Python, mais sous Ring avec :
    Tu obtiens le résultat 10 !

    Rust a en fait un typage qui est inféré comme Go, Crystal, Swift…, c'est-à-dire que tu peux le rendre statique ou le laisser chercher le type pour toi alors que tu pourrais pas le faire en Python, en Python c'est lui qui cherche pour toi, il n'y a pas de déclaration de type.

    Enfin pour ceux qui trouvent trop difficile Rust, peut-être vous tournez sur Go et revenir après sur Rust…

  5. #45
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Points : 314
    Points
    314
    Par défaut
    Oui je me suis trompé dans le mot que j'ai employé dsl
    Je ne le referai plus promis

  6. #46
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    8 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 8 440
    Points : 197 458
    Points
    197 458
    Par défaut Rust 1.19 est disponible en version stable
    Rust 1.19 est disponible en version stable
    et devient la première version à supporter union

    Sur Windows, Rust s'appuie sur link.exe pour la liaison, que vous pouvez obtenir via Microsoft Visual C ++ Build Tools. Avec la publication récente de Visual Studio 2017, la structure de répertoire de ces outils a changé. En tant que tel, pour utiliser Rust, vous deviez rester sur les outils de 2015 ou utiliser une solution de contournement (comme l'exécution de vcvars.bat). Avec la version 1.19.0, rustc sait maintenant comment trouver les outils 2017, et ils fonctionnent sans solution de contournement.

    Parmi les nouvelles fonctionnalités annoncées par l’équipe, Rust 1.19.0 est la première version qui supporte union :

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    union MyUnion {
        f1: u32,
        f2: f32,
    }

    Les union sont comme enum, mais ils sont « non étiquetés ». Les enum disposent d’étiquette qui stocke la variante appropriée à l'exécution; Les union élident cette étiquette.

    Puisque nous pouvons interpréter les données détenues dans l'union en utilisant la mauvaise variante et que Rust ne peut pas vérifier cela pour nous, cela signifie que la lecture ou l'écriture d'un champ d'union n'est pas sécurisée :

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    let u = MyUnion { f1: 1 };
     
    unsafe { u.f1 = 5 };
     
    let value = unsafe { u.f1 };

    Le pattern matching fonctionne également:

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fn f(u: MyUnion) {
        unsafe {
            match u {
                MyUnion { f1: 10 } => { println!("ten"); }
                MyUnion { f2 } => { println!("{}", f2); }
            }
        }
    }

    Quand est-ce que les union peuvent s’avérer utiles ? Un cas d'utilisation majeur est l'interopérabilité avec C. Les API de C peuvent exposer les unions, ce qui facilite l’écriture des API qui vont intégrer ces bibliothèques.

    Cette fonctionnalité a longtemps été attendue et, bien entendu, des améliorations sont prévues. Pour le moment, les union n’intègrent que les types copy et ne pourraient ne pas encore implémenter drop. « Nous prévoyons de lever ces restrictions à l'avenir », a assuré l’équipe.

    Il est désormais possible de sortir (break) des boucles loop avec une valeur :

    Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // ancien code
    let x;
     
    loop {
        x = 7;
        break;
    }
     
    // nouveau code
    let x = loop { break 7; };

    Parmi les fonctionnalités mineures, l’équipe note par exemple qu’il est possible de produire des tarballs compressés xz et qu’elle les préfère par défaut, ce qui rend le transfert de données plus petit et plus rapide. Les tarballs Gzip sont encore produits dans le cas où vous ne pouvez pas utiliser xz pour une raison quelconque.

    Le compilateur peut maintenant démarrer sur Android. « Nous avons supporté depuis longtemps Android de différentes façons, ce qui continue d'améliorer notre support », a commenté l’équipe.

    Côté compatibilité, l’équipe indique que « Lorsque nous allions vers Rust 1.0, nous avons fait une énorme pression pour vérifier tout ce qui était marqué comme stable et aussi instable. Nous avons négligé une chose, cependant : les drapeaux -Z. Le drapeau -Z permet au compilateur d’utiliser des drapeaux instables. Contrairement au reste de notre histoire de stabilité, vous pouvez toujours utiliser -Z sur une version stable de Rust. En avril 2016, dans Rust 1.8, nous avons émis un avertissement lors de l’usage de -Z sur la version stable ou bêta. Plus d'un an plus tard, nous résolvons ce trou dans notre histoire de stabilité en refusant -Z sur les versions stable et bêta. »

    Stabilisations au niveau de la bibliothèque

    La plus grande fonctionnalité de la nouvelle bibliothèque est l’ajout des macros eprint! et eprintln!. Elles fonctionnent exactement comme print! et println!, mais écrivent plutôt sur une erreur standard, par opposition à la sortie standard.

    Autres nouvelles fonctionnalités :
    • String implémente désormais FromIterator<Cow<'a, str>> et Extend<Cow<'a, str>> ;
    • Vec implémente désormais From<&mut [T]> ;
    • Box <[u8]> implémente désormais From<Box<str>> ;
    • SplitWhitespace implémente désormais Clone.

    Rust s'est traditionnellement positionné comme un « langage orienté vers l'expression », c'est-à-dire que la plupart des choses sont des expressions qui évaluent une valeur plutôt que des déclarations qui évaluent une valeur.

    Source : annonce de Rust 1.19

    Et vous ?

    Utilisez-vous Rust ? Pour quel type de développement ? Qu'en pensez-vous ?
    Quelle est la nouveauté qui vous a le plus intéressé ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/12/2019, 11h00
  2. Réponses: 0
    Dernier message: 27/03/2015, 02h38
  3. Réponses: 0
    Dernier message: 18/03/2015, 15h03
  4. Réponses: 0
    Dernier message: 26/09/2009, 12h36
  5. Réponses: 0
    Dernier message: 07/02/2009, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo