Rework of FFI, adding a value identifier, so we can keep knowledge of data even when data moves.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
22
src/utils/value_identifier.rs
Normal file
22
src/utils/value_identifier.rs
Normal file
@@ -0,0 +1,22 @@
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
|
||||
static CURRENT: AtomicUsize = AtomicUsize::new(1);
|
||||
|
||||
/// An extremely basic way to identify a piece of data.
|
||||
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq)]
|
||||
#[repr(C)]
|
||||
pub struct ValueIdentifier(usize);
|
||||
|
||||
impl Default for ValueIdentifier {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
0: CURRENT.fetch_add(1, Ordering::SeqCst),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// An object with a specific identifier.
|
||||
pub trait ValueIdentifiable {
|
||||
/// Get the identifier for the current object.
|
||||
fn value_identifier(&self) -> ValueIdentifier;
|
||||
}
|
||||
Reference in New Issue
Block a user