我在我的sinatra应用程序中执行了以下操作:
disable :show_exceptions
disable :raise_errors
error do
haml :error, :locals => {:error_message => request.env['sinatra.error'].to_s}
end
get '/error' do
raise "ERROR!!"
end
Run Code Online (Sandbox Code Playgroud)
如果我访问/error我得到一个500 - Internal Server Error响应代码,这是上帝和想要的.但是如何将代码更改为404或501?
答案:
disable :show_exceptions
disable :raise_errors
get '/error' do
halt(404,haml(:error, :locals => {:error_message => request.env['sinatra.error'].to_s}))
end
Run Code Online (Sandbox Code Playgroud) 我想实现这个Shl特性Vec,代码如下.这会使事情变得vec << 4可能,这对于它来说是个不错的选择vec.push(4).
use std::ops::Shl;
impl<T> Shl<T> for Vec<T> {
type Output = Vec<T>;
fn shl(&self, elem: &T) -> Vec<T> {
self.push(*elem);
*self
}
}
fn main() {
let v = vec![1, 2, 3];
v << 4;
}
Run Code Online (Sandbox Code Playgroud)
编译失败,出现以下错误:
无法提供扩展实现,其中特征和类型都未在此包中定义[E0117]
要么
type参数
T必须用作某些本地类型的类型参数(例如MyStruct<T>); 只有当前包中定义的特征才能为类型参数实现[E0210]
据我了解,我必须修补stdlib,更具体地来说是collections::vec板条箱.有没有其他方法可以更改此代码以成功编译?
我有以下代码:
extern crate rand;
use rand::{thread_rng, Rng};
fn main() {
let mut vec: Vec<u32> = (0..10).collect();
let mut slice: &[u32] = vec.as_mut_slice();
thread_rng().shuffle(slice);
}
Run Code Online (Sandbox Code Playgroud)
并得到以下错误:
error[E0308]: mismatched types
--> src/main.rs:9:26
|
9 | thread_rng().shuffle(slice);
| ^^^^^ types differ in mutability
|
= note: expected type `&mut [_]`
found type `&[u32]`
Run Code Online (Sandbox Code Playgroud)
我想我明白向量和切片的内容是不可变的,这会导致错误,但我不确定.
签名as_mut_slice是pub fn as_mut_slice<'a>(&'a mut self) -> &'a mut [T],所以切片应该是可变的,但它不知何故.
我知道必须有一个简单的解决办法,但我尽我所能,无法让它发挥作用.
我想要这样的东西:
fn filter_one<'a, T: Int>(input: &'a Vec<T>) -> ??? {
input.iter().filter(|&x| x == Int::one())
}
Run Code Online (Sandbox Code Playgroud)
该函数的返回类型是什么?(我想要返回Iterator)
(我希望这不是太明显,我现在已经尝试了半个小时而且开始感到沮丧:p)
编辑:
编译器给我以下错误:
<anon>:5:1: 7:2 error: the trait `core::kinds::Sized` is not implemented for the type `for<'r> core::ops::Fn(&'r T) -> bool + 'a`
<anon>:5 fn filter_one<'a, T: Int>(input: &'a Vec<T>) -> Filter<&T, Iter<'a, T>, Fn(&T) -> bool>{
<anon>:6 input.iter().filter(|&x| x == Int::one())
<anon>:7 }
<anon>:5:1: 7:2 note: required by `core::iter::Filter`
<anon>:5 fn filter_one<'a, T: Int>(input: &'a Vec<T>) -> Filter<&T, Iter<'a, …Run Code Online (Sandbox Code Playgroud) 我想使用Rust解析器(libsyntax)来解析Rust文件并从中提取函数名称等信息.我开始深入研究文档和代码,所以我的第一个目标是在.rs文件中打印独立函数的所有函数名称.
程序应该在打印函数名之前扩展所有宏,因此不会遗漏通过宏声明的函数.这就是为什么我不能自己写一些蹩脚的小解析器来完成这项工作.
我不得不承认我还不是很擅长编程Rust,所以我提前为这个问题中的任何愚蠢的陈述道歉.
我是如何理解的,我需要执行以下步骤:
ParserMacroExpanderVisitor来走AST并提取我需要的信息(例如via visit_fn)所以这是我的问题:
MacroExpander?我有想法使用自定义lint检查而不是完全成熟的解析器.我在调查这个选项.
如果重要,我正在使用 rustc 0.13.0-nightly (f168c12c5 2014-10-25 20:57:10 +0000)
背景:我想编写一个 CAD 应用程序。我想用 Vulkan 实现所有渲染。我想使用 GTK+。
我不想要一个(可见的)不同窗口用于对象的渲染图像。
所以我研究并找到了这个GtkGLArea小部件,它似乎可以做我想要的,但是对于 OpenGL。
有等价于GTKGLArea吗?如果没有,是否有另一种方法来实现我的想法?
这个片段:
a = private
p a
p a.class
Run Code Online (Sandbox Code Playgroud)
给我:
Object
Class
Run Code Online (Sandbox Code Playgroud)
我不知道是否private和public是关键字或方法在Ruby中,但是,为什么他们返回Object(我指的是类)?这种奇怪的行为有历史或实际原因吗?
我用Ruby 2.1,Rubinius 2.2.6和JRuby 1.7.12测试了这个.
我正在使用最新版本的postgresql,ruby和datamapper.
我创建一个这样的查询:
collection = Entry.all(:id => 2..4, :text => /test/)
Run Code Online (Sandbox Code Playgroud)
collection是一个DataMapper::Collection对象.DataMapper::Query只需调用就可以获得对象query = collection.query.但是如何以字符串形式获取查询的原始SQL?
我需要它,因为我必须自定义原始SQL(我需要SELECT DISTINCT而不是仅SELECT),但我不想完全自己编写SQL,因为我不确定我是否可以编写安全查询.
我也很乐意以另一种方式归档我的目标,我愿意接受全新的建议;)
假设我有以下链接:
<a href='http://google.com/bla'>http://google.com/bla</a>
Run Code Online (Sandbox Code Playgroud)
这个也有效吗?
<a href='http://google.com/bla'>http://google.com/bla</a>
Run Code Online (Sandbox Code Playgroud)
它适用于Firefox,但我不确定这是否是标准化行为.我希望这个问题不是超级哑巴!
我最近玩过Rust并尝试为Point结构实现索引,这样就some_point[2]可以得到z坐标.
但是我无法获得下面的代码来编译.我错过了什么?
struct Point {
x: int,
y: int,
z: int
}
impl IndexMut<uint, int> for Point {
fn index_mut<'a>(&'a mut self, index: &uint) -> &'a mut int {
& mut match *index {
0 => self.x,
1 => self.y,
2 => self.z,
_ => 0 //TODO: add proper error handling
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
[me@localhost rust]$ rustc blabla.rs && ./blabla
blabla.rs:25:11: 30:6 error: borrowed value does not live long enough
blabla.rs:25 & mut match *index {
blabla.rs:26 …Run Code Online (Sandbox Code Playgroud) rust ×5
ruby ×3
iterator ×2
traits ×2
escaping ×1
generics ×1
gtk ×1
gtk3 ×1
html ×1
immutability ×1
mutability ×1
parsing ×1
postgresql ×1
sinatra ×1
vulkan ×1