- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 JavaScript 中,我可以这样做:
JSON.stringify([1,2,3]) === JSON.stringify([1,2,3]) // true
在 Rust 编译为 Wasm 时,我尝试了类似的方法:
#[wasm_bindgen_test]
fn test_algo() {
let js_array_to_sort = Array::of3(&JsValue::from(1), &JsValue::from(3), &JsValue::from(2));
let js_array_after_sort = Array::of3(&JsValue::from(1), &JsValue::from(2), &JsValue::from(3));
let array = JsValue::from(&js_array_to_sort);
assert_eq!(
JSON::stringify(BubbleSort::sort(SortArray::new(array))).unwrap(),
JSON::stringify(JsValue::from(&js_array_after_sort)).unwrap(),
);
}
wasm-pack test --chrome
引发了一些关于 JsString
没有 partialeq
的错误 - JSON 的结果: :字符串化
:
error[E0277]: can't compare `js_sys::JsString` with `js_sys::JsString`
--> src/algorithms/bubble.rs:36:5
|
36 | / assert_eq!(
37 | | JSON::stringify(&BubbleSort::sort(SortArray::new(array))).unwrap(),
38 | | JSON::stringify(&JsValue::from(&js_array_after_sort)).unwrap(),
39 | | );
| |______^ no implementation for `js_sys::JsString == js_sys::JsString`
|
= help: the trait `std::cmp::PartialEq` is not implemented for `js_sys::JsString`
如果我尝试转换为字符串并以其他方式进行比较(比如直接使用 JsString
方法),我总是会遇到相同类型的编译错误。
如果我尝试直接比较这个数组,我在 JavaScript 中有类似的行为:
JsValue([1,2,3]) == JsValue([1,2,3]) // false
在 Cargo.toml
我有:
[dependencies]
wasm-bindgen = "0.2.39"
js-sys = "0.3.16"
wasm-bindgen-test = "0.2.39"
如何进行这种比较?
编辑。
我想出了这样的东西来通过这个测试:
assert_eq!(
String::from(JSON::stringify(&BubbleSort::sort(SortArray::new(array))).unwrap()),
String::from(JSON::stringify(&JsValue::from(&js_array_after_sort)).unwrap()),
);
最佳答案
尝试来自 js_sys 的 Object::is(&first, &second)
。
您可以使用 JSON::stringify(...)
然后以与在 JavaScript 中类似的方式进行比较
#[wasm_bindgen_test]
fn test_algo() {
let js_array_to_sort = Array::of3(&JsValue::from(1), &JsValue::from(2), &JsValue::from(3));
let js_array_after_sort = Array::of3(&JsValue::from(1), &JsValue::from(2), &JsValue::from(3));
let to_array = JsValue::from(&js_array_to_sort);
let from_array = JsValue::from(&js_array_after_sort);
let to_str: JsString = JSON::stringify(&to_array).unwrap();
let from_str: JsString = JSON::stringify(&from_array).unwrap();
assert_eq!(to_str == from_str, true);
assert_eq!(Object::is(&to_str, &from_str), true);
}
请使用您自己的排序算法。我已经将值作为排序进行比较,如果没有排序那么你可以看到断言错误。
关于unit-testing - 如何在 Rust 代码中比较两个 JsValues 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55172558/
我正在尝试使用 wasm_bindgen 实现 API 类使用异步调用。 #![allow(non_snake_case)] use std::future::Future; use serde::{
通读此文 article ,我不知道如何转换我的 Some(JsValue)到一个字符串。 例子: val maybeString: Option[JsValue] = getSomeJsValue(
我正在尝试向 JsValue 添加新元素,但我不知道如何去做。 val rJson = Json.parse(response) val imgId = //stuff to get the id
我正在编写一个 tvos 应用程序,它有一个函数,我的 tvml 使用对象数组调用该函数。 如何正确地将 json 转换为某种类型/接口(interface)的数组? // This type is
我正在使用 JavaScriptCore 与 Objective-C 代码交互 JSValue 中没有 isFunction 方法,但我想检查 JSValue 是否是 JS Function 并从 O
所以我在 Scala 中有这两个类似的函数,它们都将 JsValue 转换为 Java 类型的 Number,并且实际上仅在特定类型上有所不同: import play.api.lib.json._
我有两个从案例类创建的 JsValue,即书籍和书籍详细信息 val bookJson = Json.tojson(Book) val bookDetailJson = Json.tojson(Boo
我正在使用 JavaScriptCore 与 Objective-C 代码交互 JSValue 中没有 isFunction 方法,但我想检查 JSValue 是否是 JS Function 并从 O
我如何访问第一位居民的姓名?这是 Json 文件。以下是什么? val bigwig = (json \ "residents")(1)..... import play.api.libs.json.
我正在尝试使用 JavaScriptCore 和 JSValue.toObjectOfClass。我的问题是,鉴于下面的代码,为什么 ofObjectToClass 返回 nil 而不是我的 Pet
我试图在模板中使用 play (v2.2.2) 的 JsValue 定义一个 json 对象。问题是," 被转换为 " @(org: db.Tables.OrganizationRow) @impor
我正在尝试使用 JsValue of play (v2.2.2) 在模板中定义一个 json 对象。问题是," 被转换为 " @(org: db.Tables.OrganizationRow) @im
这可能是一个非常简单的问题,但我很难找到一个干净/有效的解决方案。 我只想从我拥有的 json 对象中删除一个字段。 假设我有: val body:Option[JsValue] = request.
游戏中! (2.2-M2)我有一个JsValue类似于: val people: JsValue = [{"name":"Alice","subdomain":"alice","color":"ora
我有一个 actor 在 play 2.3 中从 websocket 接收 JsValue。我还有一个定义 Reads 转换器的案例类。当我尝试针对案例类进行模式匹配时,它始终与 JsValue 而不
我正在研究 JavaScriptCore 框架,发现了两种在 JavaScript 上下文中创建 bool 值的不同方法: import JavaScriptCore let context = JS
我有两个 JSContext,我想不时地在它们之间交换 JSValue。但是,如果可能的话,我很难将 JSValue 移动到新上下文。 我正在尝试这个: newContext[@"newValue"]
我有一个简单的函数,它将完成处理程序作为 JSValue。它是一个 JSValue,因为我将此函数用作 JSExport 协议(protocol)的一部分。 此函数然后使用另一个完成处理程序调用另一个
我需要转换这个 JSON { "matchItem": { "collection": { "fieldName": [ "value1", "value2" ] } } } 到这个 MongoDB
JsObject 和 JsValue 解决了几乎相同的目的,但在 JsObject 中 val data[JsObject] = Json.obj("id1"-> "some_id1") val ne
我是一名优秀的程序员,十分优秀!