我正在玩弄DynamicLibrary
.
我的动态库的代码(编译rustc --crate-type dylib dylib.rs
):
// dylib.rs
#[no_mangle]
pub fn minicall() -> u8 {
3u8
}
Run Code Online (Sandbox Code Playgroud)
以及调用它的代码:
// caller.rs
use std::dynamic_lib::DynamicLibrary;
fn main() {
let mut v = Vec::new();
DynamicLibrary::prepend_search_path(&::std::os::getcwd());
match DynamicLibrary::open(Some("./libdylib.so")) {
Err(e) => panic!("ERROR: {}", e),
Ok(lib) => {
println!("Unsafe bloc !");
let func = unsafe {
match lib.symbol::< fn() -> u8 >("minicall") {
Err(e) => { panic!("ERROR: {}", e) },
Ok(f) => { *f },
}
};
println!("call func !");
let new_value = …
Run Code Online (Sandbox Code Playgroud) 我在Rust中做了一些简单的实验,涉及一系列函数,最后推出了这个工作代码:
fn fun1(arg: &String) -> String {
let prefix = String::from_str("a: ");
prefix.add(arg)
}
fn fun2(arg: &String) -> String {
let prefix = String::from_str("b: ");
prefix.add(arg)
}
fn doall(arg: &String, funcs_vec: &[fn(&String) -> String]) {
for f in funcs_vec.iter() {
println!("{}", (*f)(arg));
}
}
static funcs: &'static [fn(&String) -> String] = &[fun1, fun2];
fn main() {
doall(&String::from_str("foo"), funcs);
}
Run Code Online (Sandbox Code Playgroud)
打印:
a: foo
b: foo
Run Code Online (Sandbox Code Playgroud)
然后,在SO上阅读其他一些问题,我看到了|&String| -> String
应该也能正常工作的语法,但是尝试这样:
fn doall(arg: &String, funcs_vec: &[|&String| -> String]) …
Run Code Online (Sandbox Code Playgroud) 我在Django文档中看到:
您可能想通过覆盖
__init__
方法来自定义模型.但是,如果这样做,请注意不要更改调用签名,因为任何更改都可能阻止保存模型实例.
而不是覆盖__init__
,尝试使用以下方法之一:
- 在模型类上添加classmethod.
- 在自定义管理器上添加方法(通常是首选)
为什么第二种解决方案"通常是首选"?
在我有一个通过关系B
扩展模型的模型的情况下,我想创建一个生成一个生成相应对象的对象的方法,如何使用自定义管理器"更好"给定我除了默认管理器提供的内容之外,可能不会使用此管理器吗?A
OneToOne
B
A
我正处于一个班级,让我们称之为班级Generic
.这个类有成员和属性,我打算在一个std::vector<Generic>
或类似的地方使用它,处理这个类的几个实例.
此外,我想专门化这个类,泛型和专用对象之间的唯一区别是私有方法,它不访问类的任何成员(但由其他方法调用).我的第一个想法是简单地声明它virtual
并在专门的类中重载它,如下所示:
class Generic
{
// all other members and attributes
private:
virtual float specialFunc(float x) const =0;
};
class Specialized_one : public Generic
{
private:
virtual float specialFunc(float x) const{ return x;}
};
class Specialized_two : public Generic
{
private:
virtual float specialFunc(float x) const{ return 2*x; }
}
Run Code Online (Sandbox Code Playgroud)
因此我想我必须使用a std::vector<Generic*>
,并动态创建和销毁对象.
一位朋友建议我std::function<>
为我的Generic
类使用一个属性,并将其specialFunc
作为参数提供给构造函数,但我不确定如何正确地执行它.
这两种方法的优点和缺点是什么,还有其他(更好的)方法来做同样的事情吗?我很好奇.
有关详细信息,我实例化的每个对象的特化将在运行时确定,具体取决于用户输入.我可能最终会得到很多这些对象(还不确定有多少),所以我想避免任何不必要的开销.
我不知道如何从当前的Rust解析浮点数,根据我认为应该工作的文档:
use std::f32;
use std::from_str::FromStr;
fn main() {
let result = f32::from_str("3.14");
println!("{}", result.unwrap());
}
Run Code Online (Sandbox Code Playgroud)
但编译器抱怨:
<anon>:5:18: 5:31 error: unresolved name `f32::from_str`.
<anon>:5 let result = f32::from_str("3.14");
^~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
(参见Rust围栏:这里)
我在这里缺少什么?
我正在尝试将样本'computer-database-jpa'连接到postgres,但我不能. https://github.com/playframework/playframework/tree/master/samples/java/computer-database-jpa 你能帮帮我吗?
我的步骤:
添加到application.conf:
db.default.driver=org.postgresql.Driver
db.default.url=" jdbc:postgresql://localhost:5432/teste "
db.default.user="postgres"
db.default.password="postgre"
Run Code Online (Sandbox Code Playgroud)结果: 浏览器消息:找不到驱动程序:[org.postgresql.Driver]
问题出在哪儿 ?
我正在建立一个链接列表:
<ul>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
希望它们显示为链接栏我添加CSS:
li { display: inline-block; }
Run Code Online (Sandbox Code Playgroud)
然后,我想使用CSS在链接之间添加一个小内容,所以:
li :before { content: "+"; }
Run Code Online (Sandbox Code Playgroud)
这就是问题所在,+
它集成在<a>
里面了<li>
.
为什么会这样?我正在使用li:before
,不是a:before
!
我该怎样预防呢?
这是一个JSFiddle显示它:http://jsfiddle.net/KY58h/