LINUX.ORG.RU

История изменений

Исправление red75prim, (текущая версия) :

Если реализовать только реальную функциональность примера, то достаточно сделать что-то вроде

mod atom {
    use std::sync::atomic::{AtomicU64, Ordering};

    static COUNTER: AtomicU64 = AtomicU64::new(1);

    pub struct Atom {
        pub name: String,
        guid: u64,
    }
    
    impl Atom {
        pub fn new<T: Into<String>>(name: T) -> Self {
            Atom {
                name: name.into(),
                guid: COUNTER.fetch_add(1, Ordering::Relaxed),
            }
        }
        
        pub fn guid(&self) -> u64 {
            self.guid
        }
    }
}

Иерархия классов - средство для решения какой-то задачи, а не цель. В исходном примере не решается никакая задача.

Исправление red75prim, :

Если реализовать только реальную функциональность примера, то достаточно сделать что-то вроде

mod atom {
    use std::sync::atomic::{AtomicU64, Ordering};

    static COUNTER: AtomicU64 = AtomicU64::new(1);

    pub struct Atom {
        pub name: String,
        guid: u64,
    }
    
    impl Atom {
        pub fn new<T: Into<String>>(s: T) -> Self {
            Atom {
                name: name.into(),
                guid: COUNTER.fetch_add(1, Ordering::Relaxed),
            }
        }
        
        pub fn guid(&self) -> u64 {
            self.guid
        }
    }
}

Иерархия классов - средство для решения какой-то задачи, а не цель. В исходном примере не решается никакая задача.

Исправление red75prim, :

Если реализовать только реальную функциональность примера, то достаточно сделать что-то вроде

mod atom {
    use std::sync::atomic::{AtomicU64, Ordering};

    static COUNTER: AtomicU64 = AtomicU64::new(1);

    pub struct Atom {
        pub name: String,
        guid: u64,
    }
    
    impl Atom {
        pub fn new(name: &str) -> Self {
            Atom {
                name: name.to_string(),
                guid: COUNTER.fetch_add(1, Ordering::Relaxed),
            }
        }
        
        pub fn guid(&self) -> u64 {
            self.guid
        }
    }
}

Иерархия классов - средство для решения какой-то задачи, а не цель. В исходном примере не решается никакая задача.

Исправление red75prim, :

Если реализовать только реальную функциональность примера, то достаточно сделать что-то вроде

mod atom {
    use std::sync::atomic::{AtomicU64, Ordering};

    static COUNTER: AtomicU64 = AtomicU64::new(1);

    pub struct Atom {
        pub name: String,
        guid: u64,
    }
    
    impl Atom {
        pub fn new(name: &str) -> Self {
            Atom {
                name: name.to_string(),
                guid: COUNTER.fetch_add(1, Ordering::Relaxed),
            }
        }
        
        pub fn guid(&self) -> u64 {
            self.guid
        }
    }
}

Исходная версия red75prim, :

Если реализовать только реальную функциональность примера, то достаточно сделать что-то вроде

mod atom {
    use std::sync::atomic::{AtomicU64, Ordering};

    static COUNTER: AtomicU64 = AtomicU64::new(1);

    pub struct Atom {
        pub name: String,
        guid: u64,
    }
    
    impl Atom {
        pub fn new(name: &str) -> Self {
            Atom {
                name: name.to_string(),
                guid: COUNTER.fetch_add(1, Ordering::Relaxed),
            }
        }
        
        pub fn guid(&self) -> u64 {
            self.guid
        }
    }
}