История изменений
Исправление 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
}
}
}