mirror of https://github.com/boa-dev/boa.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.5 KiB
54 lines
1.5 KiB
2 years ago
|
// This example shows how to manipulate a Javascript Set using Rust code.
|
||
|
#![allow(clippy::bool_assert_comparison)]
|
||
|
use boa_engine::{object::JsSet, Context, JsValue};
|
||
|
|
||
|
fn main() -> Result<(), JsValue> {
|
||
|
// New `Context` for a new Javascript executor.
|
||
|
let context = &mut Context::default();
|
||
|
|
||
|
// Create an empty set.
|
||
|
let set = JsSet::new(context);
|
||
|
|
||
|
assert_eq!(set.size(context)?, 0);
|
||
|
set.add(5, context)?;
|
||
|
assert_eq!(set.size(context)?, 1);
|
||
|
set.add(10, context)?;
|
||
|
assert_eq!(set.size(context)?, 2);
|
||
|
set.clear(context)?;
|
||
|
assert_eq!(set.size(context)?, 0);
|
||
|
|
||
|
set.add("one", context)?;
|
||
|
set.add("two", context)?;
|
||
|
set.add("three", context)?;
|
||
|
|
||
|
assert!(set.has("one", context)?);
|
||
|
assert_eq!(set.has("One", context)?, false);
|
||
|
|
||
|
set.delete("two", context)?;
|
||
|
|
||
|
assert_eq!(set.has("two", context)?, false);
|
||
|
|
||
|
set.clear(context)?;
|
||
|
|
||
|
assert_eq!(set.has("one", context)?, false);
|
||
|
assert_eq!(set.has("three", context)?, false);
|
||
|
assert_eq!(set.size(context)?, 0);
|
||
|
|
||
|
// Add a slice into a set;
|
||
|
set.add_items(
|
||
|
&[JsValue::new(1), JsValue::new(2), JsValue::new(3)],
|
||
|
context,
|
||
|
)?;
|
||
|
// Will return 1, as one slice was added.
|
||
|
assert_eq!(set.size(context)?, 1);
|
||
|
|
||
|
// Make a new set from a slice
|
||
|
let slice_set = JsSet::from_iter([JsValue::new(1), JsValue::new(2), JsValue::new(3)], context);
|
||
|
// Will return 3, as each element of slice was added into the set.
|
||
|
assert_eq!(slice_set.size(context)?, 3);
|
||
|
|
||
|
set.clear(context)?;
|
||
|
|
||
|
Ok(())
|
||
|
}
|