What the function types are is vague
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Documentation
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- rust
- Domaine
- documentation
Piste de recherche
Commencez par la section sur les expressions d’appel de Rust Reference et par la documentation de fn de la bibliothèque standard liée dans l’issue, puis comparez leurs descriptions avec l’exemple de pointeur de fonction unsafe. Clarifiez ce qui rend l’expression d’appel valide et distinguez les types d’éléments de fonction des pointeurs de fonction sûrs et unsafe ; le travail est terminé lorsque la formulation de Reference résout l’ambiguïté indiquée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Call expressions - The Rust Reference says:
For non-function types, the expression f(...) uses the method on one of the following traits based on the function operand:
- Fn or AsyncFn — shared reference.
- FnMut or AsyncFnMut — mutable reference.
- FnOnce or AsyncFnOnce — value.
The non-function types, as indicated by the link, refer to function item types.
Consider this example:
unsafe fn foo(i:i32){}
fn main(){
let f = foo as unsafe fn(i32);
unsafe{
f(0);
}
}
f is of type unsafe function pointer, fn - Rust says:
In addition, all safe function pointers implement Fn, FnMut, and FnOnce, because these traits are specially known to the compiler.
The wording emphasizes safe; in other words, unsafe function pointers don't implement Fn, FnMut, and FnOnce. Furthermore, the (unsafe)function pointers aren't function item types, so why is f(0) a valid call expression?
More details can be seen https://users.rust-lang.org/t/why-can-the-unsafe-function-pointer-be-as-the-function-operand/133182
- Langage dominant
- Rust
- Étoiles
- 1.6k
- Forks
- 618
- Merge moyen
- 5 h 48 min
- PR mergées (30 j)
- 3
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de rust-lang/reference
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Document the rules for const UBOuverteA-const-eval A-undefined-behavior
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
rust-lang/reference#2266 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
A-resolve
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de rust-lang/reference
Issues similaires
-
good first issue help wanted program
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
hffgzktbcc-blip/ounce-core#297 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
nautechsystems/nautilus_trader#5631 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 69/100
bytecodealliance/rustix#1736 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
longbridge/gpui-kit#3871 ·
Les mainteneurs répondent en général sous 1 jour
-
area:models enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour