pub struct Array(/* private fields */);
Expand description
A collection used to store data in an indexed sequence structure. This type is internally implemented as a double linked list, which may squash values inserted directly one after another into single list node upon transaction commit.
Reading a root-level type as an YArray means treating its sequence components as a list, where every countable element becomes an individual entity:
- JSON-like primitives (booleans, numbers, strings, JSON maps, arrays etc.) are counted individually.
- Text chunks inserted by [Text] data structure: each character becomes an element of an array.
- Embedded and binary values: they count as a single element even though they correspond of multiple bytes.
Like all Yrs shared data types, YArray is resistant to the problem of interleaving (situation when elements inserted one after another may interleave with other peers concurrent inserts after merging all updates together). In case of Yrs conflict resolution is solved by using unique document id to determine correct and consistent ordering.
Implementations§
source§impl YArray
impl YArray
sourcepub fn new(items: Option<Vec<JsValue>>) -> Self
pub fn new(items: Option<Vec<JsValue>>) -> Self
Creates a new preliminary instance of a YArray
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 YArray
.
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 YArray 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 elements stored within this instance of YArray
.
sourcepub fn to_json(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
pub fn to_json(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
Converts an underlying contents of this YArray
instance into their JSON representation.
sourcepub fn insert(
&mut self,
index: u32,
items: Vec<JsValue>,
txn: ImplicitTransaction,
) -> Result<(), JsValue>
pub fn insert( &mut self, index: u32, items: Vec<JsValue>, txn: ImplicitTransaction, ) -> Result<(), JsValue>
Inserts a given range of items
into this YArray
instance, starting at given index
.
sourcepub fn push(
&mut self,
items: Vec<JsValue>,
txn: ImplicitTransaction,
) -> Result<(), JsValue>
pub fn push( &mut self, items: Vec<JsValue>, txn: ImplicitTransaction, ) -> Result<(), JsValue>
Appends a range of items
at the end of this YArray
instance.
sourcepub fn delete(
&mut self,
index: u32,
length: Option<u32>,
txn: ImplicitTransaction,
) -> Result<(), JsValue>
pub fn delete( &mut self, index: u32, length: Option<u32>, txn: ImplicitTransaction, ) -> Result<(), JsValue>
Deletes a range of items of given length
from current YArray
instance,
starting from given index
.
sourcepub fn move_content(
&mut self,
source: u32,
target: u32,
txn: ImplicitTransaction,
) -> Result<(), JsValue>
pub fn move_content( &mut self, source: u32, target: u32, txn: ImplicitTransaction, ) -> Result<(), JsValue>
Moves element found at source
index into target
index position.
sourcepub fn get(
&self,
index: u32,
txn: &ImplicitTransaction,
) -> Result<JsValue, JsValue>
pub fn get( &self, index: u32, txn: &ImplicitTransaction, ) -> Result<JsValue, JsValue>
Returns an element stored under given index
.
pub fn quote( &self, lower: u32, upper: u32, lower_open: Option<bool>, upper_open: Option<bool>, txn: &ImplicitTransaction, ) -> Result<YWeakLink, JsValue>
sourcepub fn values(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
pub fn values(&self, txn: &ImplicitTransaction) -> Result<JsValue, JsValue>
Returns an iterator that can be used to traverse over the values stored withing this
instance of YArray
.
Example:
import YDoc from 'ywasm'
/// document on machine A
const doc = new YDoc()
const array = doc.getArray('name')
const txn = doc.beginTransaction()
try {
array.push(txn, ['hello', 'world'])
for (let item of array.values(txn)) {
console.log(item)
}
} finally {
txn.free()
}
sourcepub fn observe(&self, callback: Function) -> Result<(), JsValue>
pub fn observe(&self, callback: Function) -> Result<(), JsValue>
Subscribes to all operations happening over this instance of YArray
. All changes are
batched and eventually triggered during transaction commit phase.
pub fn unobserve(&self, callback: Function) -> Result<bool, JsValue>
sourcepub fn observe_deep(&self, callback: Function) -> Result<(), JsValue>
pub fn observe_deep(&self, callback: Function) -> Result<(), 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.
pub fn unobserve_deep(&self, callback: Function) -> Result<bool, JsValue>
Trait Implementations§
source§impl FromWasmAbi for YArray
impl FromWasmAbi for YArray
source§impl IntoWasmAbi for YArray
impl IntoWasmAbi for YArray
source§impl LongRefFromWasmAbi for YArray
impl LongRefFromWasmAbi for YArray
source§impl OptionFromWasmAbi for YArray
impl OptionFromWasmAbi for YArray
source§impl OptionIntoWasmAbi for YArray
impl OptionIntoWasmAbi for YArray
source§impl RefFromWasmAbi for YArray
impl RefFromWasmAbi for YArray
source§impl RefMutFromWasmAbi for YArray
impl RefMutFromWasmAbi for YArray
source§impl TryFromJsValue for YArray
impl TryFromJsValue for YArray
source§impl VectorFromWasmAbi for YArray
impl VectorFromWasmAbi for YArray
source§impl VectorIntoWasmAbi for YArray
impl VectorIntoWasmAbi for YArray
Auto Trait Implementations§
impl Freeze for YArray
impl !RefUnwindSafe for YArray
impl !Send for YArray
impl !Sync for YArray
impl Unpin for YArray
impl !UnwindSafe for YArray
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
.