2017-09-15 1 views
0

Je voudrais utiliser la const C à l'intérieur du impl R6502 sans avoir à préciser la portée R6502::éléments constants associés Accès sans qualification de portée

use bit::BitIndex; 

pub struct R6502 { 
    pub sr: u8, // status register 
} 

impl R6502 { 
    // status flag indexs 
    const C: usize = 0; 
    const Z: usize = 1; 

    pub fn step(&mut self) { 
     self.sr.set_bit(R6502::C, false); // this is what I have to do 
     self.sr.set_bit(C, false); // this is what I want to do 
    } 
} 

J'ai essayé utiliser self::C et d'autres combinaisons de use pour obtenir seulement des erreurs à propos d'éléments non trouvés.

+0

Vous dites que 'self :: C' ne fonctionne pas, mais' Self :: C'. –

+0

J'obtiens une importation non résolue avec ça. J'utilise 1.20 –

+0

Fonctionne sur le terrain de jeu cependant: https://play.rust-lang.org/?gist=be07c2cf9daa912c6e988cb48c7ec58e & version = stable –

Répondre

2

use Les constantes associées ne sont pas implémentées dans Rust 1.20. Je n'ai pas trouvé de problème pour cela, vous pouvez donc créer votre propre problème dans le dépôt Rust GitHub.

En attendant, vous pouvez utiliser l'alias de type pour réduire le nombre de caractères.

type P = R6502; 
self.sr.set_bit(P::C, false); 
+0

Merci beaucoup pour la réponse! J'apprécie également la solution de contournement. Je vais chercher à créer un problème pour cela. –