我是Rust的新手,并试图了解引用的工作原理.在下面的代码中,当我想要进行计算时a1,i32我不必取消引用它.但随着b1这是一个Box,我必须取消对它的引用.
实际上,这两个let a2 = a1 * 2;和let a3 = *a1 * 2;的行为类似.看起来像原语中的解引用是可选的,或者编译器隐式地为我们做这件事.
fn main(){
let a = 5;
let b = Box::new(10);
let a1 = &a;
let b1 = &b;
println!("{} {}", a1, b1);
let a2 = a1 * 2;
let b2 = (**b1) * 10;
let a3 = *a1 * 2;
println!("{} {} {}", a2, a3, b2);
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释这个功能吗?
我正在尝试使用从Rust-chrono crate到我自己的特性的DateTime.
#[derive(Debug, RustcEncodable, RustcDecodable)]
pub struct Accomplishment {
name: String,
accomplishment_type: String,
date: DateTime<UTC>
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,它会抱怨
src/lib.rs:11:33: 11:47 error: the trait `rustc_serialize::serialize::Decodable` is not implemented for the type `chrono::datetime::DateTime<chrono::offset::utc::UTC>` [E0277]
src/lib.rs:11 #[derive(Debug, RustcEncodable, RustcDecodable)]
Run Code Online (Sandbox Code Playgroud)
当我检查chrono 的github repo时,它实现了rustc_serialize支持.但它是一个功能.在提交日志中它有
cargo test -v --features rustc-serialize
Run Code Online (Sandbox Code Playgroud)
我不确定如何为我的项目提供此功能.有人可以帮我解决如何使用rustc-serialize的chrono吗?
对此有一个类似的问题.但我想要的是在我的项目中使用chrono中提供的序列化支持而不实现包装器特征.
我正在尝试用sbt设置scala web项目.我有以下设置.
项目/ plugins.sbt
libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-web-plugin" % (v+"-0.2.1"))
Run Code Online (Sandbox Code Playgroud)
项目/ TaskTrackerBuild.scala
import sbt._
import com.github.siasia._
import WebPlugin._
import PluginKeys._
import Keys._
/**
* Main sbt build file for the task-tracker project.
*
*/
object TicketingCoreProject extends Build {
val ticketingVersion = "1.0.0-SNAPSHOT"
val Organization = "org.sansoft"
val ScalaVersion = "2.9.0-1"
val jodaTime = "joda-time" % "joda-time" % "1.6"
val scalaTime = "org.scala-tools.time" % "time_2.8.0" % "0.2"
val casbah = "com.mongodb.casbah" % …Run Code Online (Sandbox Code Playgroud) 我正在开发一个既有scala又有java代码的项目.我想在java代码中使用scala编写的类.我遇到的问题是scala类有一些自我类型依赖项.从java创建该类的新实例时,我不知道如何给它们.
trait Deps1 {
def dep1 = println("dep1")
}
trait Deps2 {
def dep2 = println("dep2")
}
class TestClass {
this: Deps1 with Deps2 =>
def test = {
dep1
dep2
}
}
Run Code Online (Sandbox Code Playgroud)
在scala中如果我要创建TestClass我可以使用的实例,new TestClass with Deps1 with Deps2但我不知道如何在java代码中这样做.
我正在使用scala 2.9.2.谁可以帮我这个事?