Rustchrono::Local包含本地时区信息,但似乎没有任何方法来获取字符串或秒数偏移量的值。
任何想法都是如何获得正确的局部偏移量,以便
DateTime::parse_from_rfc3339([iso8601 date] + [timezone]).unwrap().with_timezone(&Local)
Run Code Online (Sandbox Code Playgroud)
将返回DateTime运行代码的计算机的默认当前时区。
我正在努力追随
如何在 WebAssembly 中从 Rust 返回字符串(或类似的字符串)?
它允许访问 wasm 模块内的字符串数据。
我曾经wasm-pack build构建过 RUST 模块,我可以访问导出的方法,但不能直接访问内存。
webpack 生成的 JavScript 有一个方法可以让我读取字符串
function getStringFromWasm(ptr, len) {
return cachedTextDecoder.decode(getUint8Memory().subarray(ptr, ptr + len));
}
Run Code Online (Sandbox Code Playgroud)
但如果我将这个生成的 .js 文件破解为
export function getStringFromWasm(ptr, len)
Run Code Online (Sandbox Code Playgroud)
我可以访问 RUST 代码返回的字符串。
如何配置 webpack 代码生成器以提供类似的访问权限,或者以其他方式公开模块的exports.memory?
Webpack 似乎没有给我模块本身的处理。.wasm我找不到加载webpack 生成的文件的方法WebAssembly.instantiateStreaming(),因为它似乎依赖于其他生成的文件。
libc 有一个函数返回一个不应该是 free()d 的字符串。可以读取用户当前目录,/etc/passwd但不应是 free()d。如果我从指针创建一个字符串,程序会立即中止
free(): invalid pointer
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
显然,代码是不安全的。
let pw = libc::getpwnam(username.as_ptr() as *const i8);
let cd = (*pw).pw_dir;
let len = libc::strlen(cd);
builder.current_dir(String::from_raw_parts(cd as *mut u8, len, len));
Run Code Online (Sandbox Code Playgroud)
我可以mem::forget(s)使用字符串,但会泄漏内存,至少长度必须存储在某处。我只需要防止释放底层原始字节。项目是一个服务器,所以我不能忽视泄漏。