pub struct Map(/* private fields */);
Expand description
Collection used to store key-value entries in an unordered manner. Keys are always represented as UTF-8 strings. Values can be any value type supported by Yrs: JSON-like primitives as well as shared data types.
In terms of conflict resolution, Map uses logical last-write-wins principle, meaning the past updates are automatically overridden and discarded by newer ones, while concurrent updates made by different peers are resolved into a single value using document id seniority to establish order.
Implementations§
source§impl YMap
impl YMap
sourcepub fn new(init: Option<Object>) -> Self
pub fn new(init: Option<Object>) -> Self
Creates a new preliminary instance of a YMap
shared data type, with its state
initialized to provided parameter.
Preliminary instances can be nested into other shared data types such as YArray
and YMap
.
Once a preliminary instance has been inserted this way, it becomes integrated into ywasm
document store and cannot be nested again: attempt to do so will result in an exception.
pub fn get_type(&self) -> u8
sourcepub fn id(&self) -> Result<JsValue, JsValue>
pub fn id(&self) -> Result<JsValue, JsValue>
Gets unique logical identifier of this type, shared across peers collaborating on the same document.
sourcepub fn prelim(&self) -> bool
pub fn prelim(&self) -> bool
Returns true if this is a preliminary instance of YMap
.
Preliminary instances can be nested into other shared data types such as YArray
and YMap
.
Once a preliminary instance has been inserted this way, it becomes integrated into ywasm
document store and cannot be nested again: attempt to do so will result in an exception.
sourcepub fn alive(&self, txn: &YTransaction) -> bool
pub fn alive(&self, txn: &YTransaction) -> bool
Checks if current YMap reference is alive and has not been deleted by its parent collection. This method only works on already integrated shared types and will return false is current type is preliminary (has not been integrated into document).
sourcepub fn length(&self, txn: &ImplicitTransaction) -> Result<u32, JsValue>
pub fn length(&self, txn: &ImplicitTransaction) -> Result<u32, JsValue>
Returns a number of entries stored within this instance of YMap
.
sourcepub fn to_json(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
pub fn to_json(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
Converts contents of this YMap
instance into a JSON representation.
sourcepub fn set(
&mut self,
key: &str,
value: JsValue,
txn: ImplicitTransaction
) -> Result<(), JsValue>
pub fn set( &mut self, key: &str, value: JsValue, txn: ImplicitTransaction ) -> Result<(), JsValue>
Sets a given key
-value
entry within this instance of YMap
. If another entry was
already stored under given key
, it will be overridden with new value
.
sourcepub fn delete(
&mut self,
key: &str,
txn: ImplicitTransaction
) -> Result<(), JsValue>
pub fn delete( &mut self, key: &str, txn: ImplicitTransaction ) -> Result<(), JsValue>
Removes an entry identified by a given key
from this instance of YMap
, if such exists.
sourcepub fn get(
&self,
key: &str,
txn: &ImplicitTransaction
) -> Result<JsValue, JsValue>
pub fn get( &self, key: &str, txn: &ImplicitTransaction ) -> Result<JsValue, JsValue>
Returns value of an entry stored under given key
within this instance of YMap
,
or undefined
if no such entry existed.
pub fn link( &self, key: &str, txn: &ImplicitTransaction ) -> Result<JsValue, JsValue>
sourcepub fn entries(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
pub fn entries(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
Returns an iterator that can be used to traverse over all entries stored within this
instance of YMap
. Order of entry is not specified.
Example:
import YDoc from 'ywasm'
/// document on machine A
const doc = new YDoc()
const map = doc.getMap('name')
const txn = doc.beginTransaction()
try {
map.set(txn, 'key1', 'value1')
map.set(txn, 'key2', true)
for (let [key, value] of map.entries(txn)) {
console.log(key, value)
}
} finally {
txn.free()
}
sourcepub fn observe(&mut self, f: Function) -> Result<Observer, JsValue>
pub fn observe(&mut self, f: Function) -> Result<Observer, JsValue>
Subscribes to all operations happening over this instance of YMap
. All changes are
batched and eventually triggered during transaction commit phase.
Returns an YObserver
which, when free’d, will unsubscribe current callback.
sourcepub fn observe_deep(&mut self, f: Function) -> Result<Observer, JsValue>
pub fn observe_deep(&mut self, f: Function) -> Result<Observer, JsValue>
Subscribes to all operations happening over this Y shared type, as well as events in
shared types stored within this one. All changes are batched and eventually triggered
during transaction commit phase.
Returns an YEventObserver
which, when free’d, will unsubscribe current callback.
Trait Implementations§
source§impl FromWasmAbi for YMap
impl FromWasmAbi for YMap
source§impl IntoWasmAbi for YMap
impl IntoWasmAbi for YMap
source§impl LongRefFromWasmAbi for YMap
impl LongRefFromWasmAbi for YMap
source§impl OptionFromWasmAbi for YMap
impl OptionFromWasmAbi for YMap
source§impl OptionIntoWasmAbi for YMap
impl OptionIntoWasmAbi for YMap
source§impl RefFromWasmAbi for YMap
impl RefFromWasmAbi for YMap
source§impl RefMutFromWasmAbi for YMap
impl RefMutFromWasmAbi for YMap
source§impl TryFromJsValue for YMap
impl TryFromJsValue for YMap
source§impl VectorFromWasmAbi for YMap
impl VectorFromWasmAbi for YMap
source§impl VectorIntoWasmAbi for YMap
impl VectorIntoWasmAbi for YMap
Auto Trait Implementations§
impl Freeze for YMap
impl !RefUnwindSafe for YMap
impl !Send for YMap
impl !Sync for YMap
impl Unpin for YMap
impl !UnwindSafe for YMap
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
§type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::Abi
source§fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi
, except that it may throw and never
return in the case of Err
.