我正在尝试在Rust中编写一个简单的TCP echo服务器,我对如何将匹配的值返回到Err感到困惑.
我知道返回类型应该是usize,并且我想返回零.在其他语言中,我只是,return 0;但Rust不会让我.我也试过了usize::Zero().我确实通过这样let s:usize = 0; s做得到它,但这看起来非常愚蠢,我想有更好的方法来做到这一点.
let buffer_length = match stream.read(&mut buffer) {
Err(e) => {
println!("Error reading from socket stream: {}", e);
// what do i return here?
// right now i just panic!
// return 0;
},
Ok(buffer_length) => {
stream.write(&buffer).unwrap();
buffer_length
},
};
Run Code Online (Sandbox Code Playgroud)
我知道我也可能只是没有match返回任何内容并且buffer_length在match函数调用之内消耗,但在这种情况下我不想这样做.
处理这样的事情最常用的方法是什么?
我刚开始使用Emscripten,并希望开始使用GLFW和其他库.我完全迷失了如何使用Emscripten构建,链接和使用其他库.
我曾尝试按照Emscripten网站上的说明进行操作,但他们没有帮助我. http://kripken.github.io/emscripten-site/docs/compiling/Building-Projects.html#using-libraries
有没有关于如何使用Emscripten库的详细说明?或者特别是GLFW?
我无法让emscripten使用openGL着色器.该项目使用emscripten和gcc编译得很好但是当我尝试运行emscripten输出时失败.
我从编译顶点着色器得到的错误:
ERROR: 0:1: 'core' : invalid version directive
ERROR: 0:3: 'layout' : syntax error
Run Code Online (Sandbox Code Playgroud)
我从编译片段着色器得到的错误:
ERROR: 0:1: 'core' : invalid version directive
ERROR: 0:3: 'in' : storage qualifier supported in GLSL ES 3.00 only
ERROR: 0:3: '' : No precision specified for (float)
ERROR: 0:5: 'out' : storage qualifier supported in GLSL ES 3.00 only
ERROR: 0:5: '' : No precision specified for (float)
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令编译此项目:
em++ src/*.cpp -Iinclude/ -o test.html -std=c++11 -s USE_GLFW=3 -s FULL_ES3=1
Run Code Online (Sandbox Code Playgroud)
顶点着色器源:
#version 330 core …Run Code Online (Sandbox Code Playgroud)