我正在寻找一种方法来解码 elm 中包含两个元素的元组。
[[字符串,布尔值]]
外部列表很容易用 Json.list 解析,但如何将数组解码为元组?我尝试了从Decode a JSON tuple to Elm tuple的解决方案但我得到的只是关于 Decoder 和 Maybe 类型的错误,我假设自那个答案以来 elm 发生了一些变化。或者也许我错过了一个导入,我不知道。
谢谢
在旧版本的 mio 文档中,我找到 mio::channel,它似乎用于创建EventedFd可以注册的通道实现Poll。我还在 reddit 上看到这已被更改为有利于其他内容,但我不知道注册频道的新方式是什么。
std::sync::mpsc迄今为止,使用 mio 等待频道(或其他内容)的当前方式是什么?我在谷歌上能找到的只是旧版本 mio 文档的链接。谢谢 !
当我遇到同样的问题时,我希望可以提供一些代码以使问题更容易理解:
use std::io;
use std::net::*; //{TcpListener,TcpStream,IpAddr,Ipv4Addr,SocketAddr};
use std::thread::*;
use std::sync::mpsc::*; //{Receiver,SyncSender,Sender,channel,sync_channel};
fn poll_quit( rx : &Receiver::<u8> ) -> bool {
match rx.try_recv() {
Ok(_) => true,
Err(TryRecvError::Empty) => false,
Err(TryRecvError::Disconnected) => true
}
}
fn guard_external_tcp_port( rx : Receiver::<u8>) -> () {
let listener = TcpListener::bind("127.0.0.1:8384").expect("tcp guard - bind failed!");
listener.set_nonblocking(true).expect("cannot set tcp listener to nonblocking!");
while false == poll_quit(&rx) {
match listener.accept() …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Bevy 0.3,并且我能够轻松地将内置转换与Camera2dComponents::default(). 这是自上而下的二维。
问题在于尝试将玩家的旋转与鼠标同步:
for event in evreader.iter(&cursor_moved_events) {
println!("{:?}", transform);
transform.look_at(Vec3::new(event.position.x(), event.position.y(), 0.0), Vec3::new(0.0, 0.0, 1.0));
println!("{:?}", transform);
}
Run Code Online (Sandbox Code Playgroud)
当然,这个变换是我的玩家的变换。这是输出的内容:
Transform { translation: Vec3(0.0, 0.0, 0.0), rotation: Quat(0.0, 0.0, 0.0, 1.0), scale: Vec3(1.0, 1.0, 1.0) }
Transform { translation: Vec3(0.0, 0.0, 0.0), rotation: Quat(0.5012898, -0.49870682, -0.49870682, 0.5012898), scale: Vec3(1.0, 1.0, 1.0) }
Run Code Online (Sandbox Code Playgroud)
我对 2D 中的look_atup中的内容有点困惑,但我尝试了一些不同的值,结果总是相同的:一旦look_at 运行,玩家就会从视图中消失。
为什么此后相机再也看不到玩家了?我的这个look_at做错了什么?
我正在尝试使用Haskell-Charts(http://hackage.haskell.org/package/Chart)生成一些图表.它工作正常,我得到一个很好的图表
我唯一的"问题"是左边的数字,这有点难以阅读.有没有办法可以提供一个函数,在显示它们之前转换这些数字?我可以在绘图之前转换数字,但我会失去精确度.我一直在看文档但我没有看到它,如果存在的话.
谢谢
编辑:这是代码.
import Graphics.Rendering.Chart.Easy
import Graphics.Rendering.Chart.Axis.LocalTime
import Graphics.Rendering.Chart.Backend.Diagrams
import Data.Time.LocalTime
main = do
-- Get datas
toFile def "test.svg" $ do
layout_title .= "Active mem"
plot (line "Active" $ [L.map (\v -> ((utcToLocalTime utc $ time v) :: LocalTime, (fromIntegral $ value v) :: Int)) $ V.toList q])
Run Code Online (Sandbox Code Playgroud)
不幸的是,我从数据库中获取数据,而且我无法公开访问它.但是一个带有大数字的[(LocalTime,Int)]列表应该会给你类似的东西.我正在使用Diagrams后端顺便说一下
我有一个解析的对象看起来有点像这样:
{
"data":
[
{
"virtio0": "some text",
"virtio1": "blah",
"ide2": "some other text",
"cores": 1,
"mem": 512,
...
},
{
// The same ...
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在我基本上想把它解析成[VM],但我的问题是那些编号的字段.根据VM配置,它可能有也可能没有virtioX字段,ideX字段..我没有预先知道的方法,也没有猜测数字.我认为最好的方法是定义一个包含类似Virtio |的磁盘类型 萨塔| 类型的IDE等等,以及值的Text字段,然后每个VM都有一个[Disk]类型.像这样的东西:
data DiskType = Virtio | Sata | IDE
data Disk = Disk {diskType :: DiskType, diskPath :: Text}
data VM = VM {cores :: Int, disks :: [Disk], mem :: Int, ...}
Run Code Online (Sandbox Code Playgroud)
那会很棒,但是我如何将我直接在VM json对象中的随机字段解析成列表?
我来这里是为了别的东西,但试图写下我的问题,我意识到我没有办法做到这一点。我已经使用 mirage 和 irmin 一段时间了,只要所有代码都保留在 Main 模块中,一切都很棒。但是,当然,它很快就会变成一个大得离谱的文件,并且试图将它拆分成模块让我对类型逃逸其作用域之类的东西感到抓狂。
不是仅仅将控制台从 start 传递给其他一些函数,我必须将那些其他函数放在一个函子中,该函子将接受Mirage_types_lwt.CONSOLE实际的控制台变量,这意味着一切最终都在从头开始实例化的函子中,并以一个无法阅读的混乱代码。
我在制作一个巨大的丑陋模块来轻松存储和传递所有这些时遇到了问题(从常规代码中“隔离”需要这些混乱的部分),而且我无法弄清楚如何声明这样的东西:
module type ContextConfig = sig
module Store
val clientctx : Client.ctx
....
end
let mkContextConfig (module Store : Repo) ctx =
(module struct
(module Store : Repo)
let clientctx = ctx
end : ContextConfig)
Run Code Online (Sandbox Code Playgroud)
(Repo 是我用来包装 Irmin 函子的模块)。这显然不起作用,我尝试了很多语法,我猜这是不可能的,这意味着我做错了什么?
我希望得到有关以干净的方式处理所有这些函子和类型的正确方法的建议,我如何传递诸如控制台或管道之类的东西,而不必对 Main 模块中的所有内容进行函子化和实例化来传递它约后?
我不确定解决这个问题的最佳方法,所以我想我会问。我有这样的一行:
NAME="/dev/sda" TYPE="disk" MODEL="KINGSTON SV300S3"
Run Code Online (Sandbox Code Playgroud)
(从 lsblk 获得,有几个选项),我想尽可能简单地提取每个字段。是的,我知道 lsblk 有一个非常好的 --json,但不幸的是,这是最近添加的,我无法使用,我们有一些相当旧的服务器仍在生产中。
也许将 Str 与一些正则表达式一起使用?谷歌似乎经常说menhir,我从来没有使用过它,但我担心仅仅对于这样的几个变量来说可能有点重?我尝试过使用 String.split_on_char 和 String.slice,但是当模型包含空格时,它开始变得复杂, String.split_on_char 当然不会忽略双引号之间的空格。
我对 angular 很陌生,我无法弄清楚如何在不导航到它的情况下以编程方式生成路由链接。
我正在使用 angular-slickgrid 并且我在一些需要生成一些 HTML 来呈现单元格的列上有一个自定义格式化程序,我想在那里有一个单独组件的链接:
const formatZoneCell: Formatter = (row: number, cell: number, value: any, columnDef: Column, dataContext: any, grid?: any) =>
{
if (value === undefined) { return (""); }
var zone = 0;
return (`<span>${value} - <a ?>details</a></span>`);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些东西在哪里?是,就像 '[routerLink]="[...]"' 但显然它没有得到评估。该函数中有没有办法在返回之前生成链接,还是必须对其进行硬编码?
我知道一个解决方案是有一个 onclick 事件并调用一个函数,然后该函数将执行 router.navigate 调用,但我没有走这条路,因为我认为这会生成用户在悬停时看不到的链接。
额外的问题,如果有人知道使用 angular-slickgrid 为每个单元格定义上下文菜单的方法,我将不胜感激。看起来有一些上下文菜单选项,但似乎没有一个很好的方法可以知道单击了哪个单元格,这就是为什么我试图通过格式化程序在单元格本身中添加链接,但这不是很漂亮。
我希望能够向该右键单击菜单添加一个条目“详细信息”,该菜单将链接到我的其他页面,并根据右键单击哪个单元格使用适当的参数。
我一直在努力在Rust中重新开发我的一个项目,以进行尝试,而我想做的一件事情就是插件系统。我还没有对dylib进行太多研究,但是现在我想使体系结构正确,以便以后添加dylib不会太难。
我的问题是关于插件配置的,我想为每个插件调用一个init函数,并允许它们返回一个对象,然后将该对象传递给函数的每次调用。我真的不在乎那个对象是什么。这就是插件的业务。
我尝试使用a,Box<dyn>但是没有特质当然是行不通的。这是否意味着唯一的方法就是声明一个空特征,PluginConfig例如,然后使用dyn?然后,插件可以仅实现该特征并从其init返回。还是我错过了完整的正确方法?如果我正确地理解了这本书,那么这样做将使以后的插件无法访问其字段,因为在Trait中未定义它们,因此无法正常工作。
tl; dr我只是在寻找与存储锈蚀等效的锈蚀void *。