如何从包中的Rust代码访问Cargo包的元数据(例如版本)?在我的情况下,我正在构建一个命令行工具,我希望有一个标准的--version
标志,我希望实现读取包的版本,Cargo.toml
所以我不必在两个地方维护它.我可以想象还有其他人可能想要从程序中访问Cargo元数据.
我已经写了很长时间的JavaScript了,我从来没有理由使用它null
.似乎undefined
总是更可取,并以编程方式提供相同的目的.用什么实际理由null
代替undefined
?
我刚刚开始使用原型JavaScript,并且我很难弄清楚this
当范围发生变化时如何在原型函数内保留对主对象的引用.让我说明一下我的意思(我在这里使用jQuery):
MyClass = function() {
this.element = $('#element');
this.myValue = 'something';
// some more code
}
MyClass.prototype.myfunc = function() {
// at this point, "this" refers to the instance of MyClass
this.element.click(function() {
// at this point, "this" refers to the DOM element
// but what if I want to access the original "this.myValue"?
});
}
new MyClass();
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过以下方式执行此操作来保留对主对象的引用myfunc
:
var myThis = this;
Run Code Online (Sandbox Code Playgroud)
然后使用myThis.myValue
访问主对象的属性.但是当我有一大堆原型函数时会发生什么MyClass
?我是否必须this
在每个开头保存引用?似乎应该有一个更清洁的方式.这样的情况怎么样:
MyClass = function() {
this.elements $('.elements'); …
Run Code Online (Sandbox Code Playgroud) 我过去在几个项目中使用过CakePHP,并且最近开始使用Ruby on Rails,但是有一个新项目我即将开始需要PHP.在CakePHP上刷新自己的同时,我了解到有一个名为Lithium的新框架,它本质上就是CakePHP 3.它由一群前核心CakePHP开发人员开发.
我还没有找到关于它的大量信息,因为它仍然处于开发状态,但我想知道是否有人知道(或有一个链接)一些关于它提供给CakePHP的好处的信息.希望有点超出官方网站上显示的快速概述.我正在尝试决定是否将CakePHP用于我即将推出的PHP项目,或者等待Lithium发布非开发版本并尝试一下.
我有几个Rails应用程序,我正在寻求与OmniAuth集成,但我有一个概念性的问题,我想先找出来.请考虑以下情形:
由于Twitter不向Foo提供电子邮件地址,因此没有通用标识符可用于检测两个Joes是同一个Joe.您可以决定仅支持向您提供用户电子邮件地址的提供商,但如果用户在不同提供商处注册了不同的电子邮件地址,则无效.
我能想到的唯一其他解决方案是为用户提供一些合并两个现有帐户的方法.与使用OmniAuth时其他一切相对容易相比,这是一个令人头疼的问题.如果这是唯一的解决方案,是否有人遇到指导/教程,展示如何做到这一点的示例?鉴于OmniAuth的受欢迎程度,我对这个问题没有得到更多关注感到惊讶.
谢谢!
Git商店标签在哪里?我执行:
$ git tag
v0.1.0
v0.10.0
v0.11.0
Run Code Online (Sandbox Code Playgroud)
但目录.git/refs/tags
是空的.Git在哪里存储这些标签?
谢谢.
rustdoc允许您通过在每行上面包含doc注释来记录struct字段和枚举变体:
enum Choices {
/// The first choice.
First,
/// The second choice.
Second,
}
struct Person {
/// The person's name.
name: String,
/// The person's age.
age: u8,
}
Run Code Online (Sandbox Code Playgroud)
这些将在rustdoc生成的HTML中显示出良好的格式.但是,我还没有看到任何方法为函数参数制作类似的格式良好的文档.是否有"官方"方式来记录它们,或者您只需要在函数的主要文档部分中描述它们是否自由形式?
在Go中,您可以使用defer
关键字在当前函数返回时执行函数,类似于finally
其他语言中的传统关键字.无论整个功能体发生什么,这对于清理状态都很有用.以下是Go博客的一个例子:
func CopyFile(dstName, srcName string) (written int64, err error) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dst, err := os.Create(dstName)
if err != nil {
return
}
defer dst.Close()
return io.Copy(dst, src)
}
Run Code Online (Sandbox Code Playgroud)
如何在Rust中实现此功能?我知道RAII,但在我的具体情况下,状态是在外部系统中.我正在编写一个将密钥写入键值存储的测试,我需要确保在测试结束时将其删除,无论测试中的断言是否引起恐慌.
我发现了这个要点,但我不知道这是否是推荐的方法.不安全的析构函数令人担忧.
Rust GitHub存储库中也存在这个问题,但它已经有三年了,显然不再那么相关了.
我有一个有两个字段的模型,我将其称为first_name和last_name,我想确保两者的组合不区分大小写.我已经在那里使用了这个:
validates_uniqueness_of :first_name, :scope => :last_name
Run Code Online (Sandbox Code Playgroud)
问题是,唯一性检查似乎区分大小写,即使文档说默认情况下它应该不区分大小写.所以给出一个现有记录:
{ :first_name => 'John', :last_name => 'Smith' }
Run Code Online (Sandbox Code Playgroud)
这将是允许的:
{ :first_name => 'JOHN', :last_name => 'SMITH' }
Run Code Online (Sandbox Code Playgroud)
以及在名字或名字中有任何案例变异的任何其他记录.为什么允许这些记录?如何在两个字段中一起强制使用不区分大小写的唯一性?
scope ruby-on-rails case-insensitive validates-uniqueness-of
我有一个使用Git版本的项目,我想开源,但它有一些私人信息,特定于最初使用它的环境.我将更改有问题的信息,以从未包含在存储库中的配置文件加载.我知道我应该首先做到这一点,但由于私人信息仍然存在于以前的提交中,我怎样才能将其从历史中删除?我是否只需要根据最新提交启动新存储库并丢失所有历史记录,或者是否有办法在删除任何私人信息记录时抢救当前存储库?
编辑:为了澄清,我不想完全删除包含此私人信息的文件,因为它们仍然使用.相反,我想删除/删除/更改其中某些字符串的出现.