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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Rust 1.48.0 est disponible avec quelques modifications dans rustdoc
Pour rendre la rédaction de documentation encore plus facile

Le , par Bill Fassinou

140PARTAGES

9  0 
Rust est un langage de programmation open source, dont le code source est disponible sur GitHub, qui permet à chacun de créer des logiciels fiables et efficaces. Environ deux mois après la publication de Rust1.47.0, l'équipe de développement du langage a annoncé ce jeudi la disponibilité générale de la version stable de Rust 1.48.0. Cette nouvelle version apporte quelques nouvelles fonctionnalités et changements dans le langage, en particulier dans l'outil rustdoc. Voici ci-dessous ce dont il s'agit dans cette nouvelle mouture du langage.

Liaison plus facile dans rustdoc

L'équipe du langage a annoncé que la vedette de cette nouvelle version est rustdoc, qui bénéficie de quelques modifications pour faciliter encore plus la rédaction de documentation. Alors, qu'est-ce que rustdoc ? En effet, la distribution standard de Rust est livrée avec un outil appelé rustdoc. Son travail consiste à générer de la documentation pour les projets Rust. Sur un plan fondamental, rustdoc prend comme argument soit une racine de caisse (crate), soit un fichier Markdown, et produit du HTML, du CSS et du JavaScript.


Le fait que rustdoc permet de rédiger de la documentation dans Markdown le rend très facile à utiliser, mais présente aussi quelques inconvénients. Markdown ne sait rien de Rust, et des URL que rustdoc génère. Ainsi, lors de l'écriture d'une documentation, les programmeurs Rust doivent décrire eux-mêmes ces liens manuellement. Selon l'équipe, non seulement ce processus est fastidieux et sujet à erreur, mais il peut également être erroné à certains endroits. En gros, vous ne pouvez pas écrire ces liens à la main, et les faire tous correspondre à la réalité.

Dans cette version, vous pouvez utiliser une certaine syntaxe pour faire savoir à rustdoc que vous essayez de créer un lien vers un type, et il générera les URL pour vous.

Ajout des alias de recherche

À partir de Rust 1.48.0, vous pouvez maintenant spécifier #[doc(alias = "<alias>")] sur les éléments pour ajouter des alias de recherche lors de la recherche dans l'interface utilisateur de rustdoc. Il s'agit d'un changement moins important, mais toujours utile. Cela ressemble à ceci :

Code Rust : Sélectionner tout
1
2
#[doc(alias = "bar")] 
struct Foo;

Avec cette annotation, si vous recherchez "bar" dans la recherche de rustdoc, "Foo" apparaîtra dans les résultats, même si le texte de votre recherche ne contient pas "Foo". D'après l'équipe, un cas d'utilisation intéressant pour les alias est celui des caisses de wrapper FFI, où chaque fonction Rust pourrait avoir un alias correspondant à la fonction C qu'elle enveloppe. Les utilisateurs existants de la bibliothèque C sous-jacente pourraient alors facilement rechercher les bonnes fonctions Rust.

La bibliothèque de Rust

Selon l'équipe, le changement le plus significatif de l'API est en quelque sorte "une bouchée de pain" : [T ; N] : TryFrom<Vec<T>> est maintenant stable. Qu'est-ce que cela signifie ? Eh bien, vous pouvez utiliser cela pour essayer de transformer un vecteur en un tableau d'une longueur donnée

« Dans la dernière version de Rust, nous avons parlé de la possibilité pour la bibliothèque standard d'utiliser des const génériques. C'est un bon exemple des types d'API que nous pouvons ajouter avec ce genre de fonctionnalités. Attendez-vous à en savoir plus sur la stabilisation des const generics bientôt », a déclaré l'équipe de développement du langage.

D'autres changements dans la bibliothèque

  • io::Write est maintenant implémenté pour &ChildStdin, &Sink, &Stdout, et &Stderr ;
  • tous les tableaux, quelle que soit leur longueur, implémentent maintenant TryFrom<Vec<T>> ;
  • la macro matches! supporte maintenant l'utilisation d'une virgule de fin de ligne ;
  • Vec<A> implémente maintenant PartialEq<[B]>A : PartialEq<B> ;
  • les méthodes RefCell::{replace, replace_with, clone} utilisent maintenant toutes #[track_caller].


Cinq nouvelles API ont été stabilisées dans cette version

  • slice::as_ptr_range ;
  • slice::as_mut_ptr_range ;
  • VecDeque::make_contiguous ;
  • future::pending ;
  • future::ready.


Les API suivantes, auparavant stables, ont été rendues constantes

  • Option::is_some ;
  • Option::is_none ;
  • Option::as_ref ;
  • Result::is_ok ;
  • Result::is_err ;
  • Result::as_ref ;
  • Ordering::reverse ;
  • Ordering::then.


Notes de compatibilité

  • les liaisons de type associées sur les objets du trait sont désormais vérifiées pour respecter les limites déclarées sur le trait le trait lors de la vérification de leur implémentation ;
  • lorsque les limites du trait sur les types associés ou les types opaques sont ambiguës, le compilateur ne fait plus un choix arbitraire sur la limite à utiliser ;
  • correction des non-terminaux récursifs qui n'étaient pas développés dans les macros lors de la vérification de la préimpression/réparation. Cela peut provoquer des erreurs si votre macro ne gérait pas correctement les jetons non terminaux récursifs ;
  • les références &mut aux types de taille non nulle ne sont plus promues ;
  • rustc vous avertira désormais si vous utilisez des attributs comme #[link_name] ou #[cold] dans des endroits où ils n'ont aucun effet ;
  • mem::uninitialized paniquera maintenant si des types internes à l'intérieur d'une structure ou d'une énumération interdisent l'initialisation zéro ;
  • #[target_feature] affichera maintenant une erreur s'il est utilisé à un endroit où il n'a aucun effet ;
  • les exceptions étrangères sont maintenant capturées par catch_unwind et provoqueront un abandon. Note : Ce comportement n'est pas garanti et est toujours considéré comme un comportement indéfini.


Source : Rust 1.48.0

Et vous ?

Que pensez-vous de Rust 1.48.0 ?

Voir aussi

Rust 1.47.0 est disponible et s'accompagne de la prise en charge par défaut de LLVM 11, ainsi que de neuf API qui passent en version stable dans la bibliothèque

Rust 1.46.0 est disponible et s'accompagne de plusieurs nouveautés dans const fn, ainsi que de deux nouvelles API dans la bibliothèque standard

Rust 1.45.0 est disponible avec la correction du problème de la conversion entre des entiers et des flottants et de nombreuses fonctionnalités

Rust 1.44.0 est disponible et apporte la commande cargo tree à Cargo pour l'impression d'un graphe arborescent des dépendances

Une erreur dans cette actualité ? Signalez-nous-la !