我目前正在为这种语言建立一个简单的口译员来练习.唯一需要克服的问题是从用户输入中读取单个字节作为字符.到目前为止,我有以下代码,但我需要一种方法String将第二行生成的转换为u8我可以转换的一个或另一个整数:
let input = String::new()
let string = std::io::stdin().read_line(&mut input).ok().expect("Failed to read line");
let bytes = string.chars().nth(0) // Turn this to byte?
Run Code Online (Sandbox Code Playgroud)
以字节为单位的值应该是u8我可以转换为a i32以在其他地方使用的值.也许有一种更简单的方法可以做到这一点,否则我将使用任何有效的解决方案.
我有一个特征,其中一个函数不self作为参数:
trait MyTrait {
fn function(x: i32) -> i32;
}
struct Dummy;
impl MyTrait for Dummy {
fn function(x: i32) -> i32 {
x * 2
}
}
fn call_method<T: MyTrait>(object: T) {
let x = object.function(2);
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
库的用户需要为任何类型实现特征,通常是空结构.我的一个函数接受一个实现的泛型类型MyTrait.当我尝试function在泛型类型上调用该方法时,它给了我这个错误:
错误:没有为当前范围中的
function类型命名的方法T
我在这个问题的答案中尝试了解决方案,但是我得到了同样的错误.如何在泛型类型上调用静态方法?
我有一个Rust库需要通过ctypes模块导入到Python中.我的目标是使用带有Vec<T>/ i32作为参数的Rust函数并从Python返回这些类型.目前,我可以将整数传递给Rust函数,并让它们返回列表/整数.这是当前的代码:
蟒蛇:
import ctypes
from ctypes import cdll
class List_4(ctypes.Structure):
_fields_ = [("array", ctypes.ARRAY(ctypes.c_int32, 4))]
rust = cdll.LoadLibrary("target/debug/py_link.dll")
rust.function_vec.restype = List_4
foobar = rust.function_i32(5)
barbaz = rust.function_vec([1, 2, 3, 4]) # Throws error: Don't know how to convert parameter
print foobar
print barbaz
Run Code Online (Sandbox Code Playgroud)
锈:
#[repr(C)]
pub struct List_4 {
array: [i32; 4]
}
#[no_mangle]
pub extern fn function_i32(number: i32) -> i32 {
number
}
#[no_mangle]
pub extern fn function_vec(list: List_4) -> List_4 {
List_4 { array: …Run Code Online (Sandbox Code Playgroud) 我试图将我的程序拆分为一个包含多个具有结构和函数的子模块的库,以及一个使用所有子模块的主文件.我想要一个包含有用功能的子模块,除了其他子模块之外,其他任何地方都不需要这些功能.但是,我很难将此子模块导入另一个子模块.货物项目称为eant_rust.我的lib.rs和main.rs文件位于src目录中.我有一个名为modules的文件夹,lib.rs文件从中导入.在modules文件夹里面是一个mod.rs文件,我遇到了两个子模块.
lib.rs:
pub mod modules;
Run Code Online (Sandbox Code Playgroud)
main.rs:
extern crate eant_rust;
fn main() {}
Run Code Online (Sandbox Code Playgroud)
mod.rs(带有两个子模块的模块文件夹内):
pub mod network;
Run Code Online (Sandbox Code Playgroud)
functions.rs(一个子模块):
pub fn reverse() {}
pub fn sum_vec() {}
Run Code Online (Sandbox Code Playgroud)
network.rs(另一个):
use modules::functions;
functions::reverse();
functions::sum_vec();
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,我收到以下错误:错误:未解决的导入modules::functions.有没有functions在modules.
我想创建一个函数来返回一个序列的所有排列。我从 Rosetta Code 中拿了一个例子,并试图用 Rust 编写它,但它不起作用。当我尝试修复它时,我要么导致溢出,要么再次破坏它。这段代码有一个算术溢出错误:
fn permutations_(sequence: Vec<i32>) -> Vec<Vec<i32>> {
if sequence.len() == 0 {
let x: Vec<Vec<i32>> = vec![vec![]];
return x
}
let mut result: Vec<Vec<i32>> = Vec::new();
for (i, item) in permutations_(to_vec(&sequence[0..sequence.len() - 1])).iter().enumerate() {
let mut n = reverse(&(0..item.len() + 1).collect::<Vec<usize>>());
if i % 2 != 0 {
n = (0..item.len() + 1).collect::<Vec<usize>>();
}
for k in n {
let mut items = Vec::new();
for x in &item[0..k] {
items.push(*x);
}
items.push(item[item.len() - 1]);
for …Run Code Online (Sandbox Code Playgroud) 我正在学习 django,并且我有一个 mysite 文件夹。当我同步数据库时,它提示我创建一个超级用户。我输入 yes,并完成了一半的表格,但当它需要密码时我无法输入任何字符。我搜索了google,发现: python manage.py createsuperuser 发生了同样的事情,我无法输入密码。我正在使用 django 1.5 和 python 2.7,以防你需要知道。