我想避免从我的脚本中调用瓷器命令,但有没有办法获得一些git checkout <commit>只使用管道命令的行为checkout-index?我对工作副本的影响特别感兴趣:假设一切都很干净,checkout删除在旧HEAD中跟踪但在新HEAD中不存在的文件.checkout-index似乎没有删除文件的任何概念.我能想到的最接近的事就是打电话
git diff-tree -p <old> <new> | git apply
Run Code Online (Sandbox Code Playgroud)
但计算整个差异似乎不必要的昂贵.有没有更好的办法?
如果我尝试迭代两次切片,它可以正常工作:
let a = &[1, 2, 3];
for i in a {
println!("{}", i);
}
for i in a { // works fine
println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试迭代向量两次,它会失败:
let a = vec![1, 2, 3];
for i in a {
println!("{}", i);
}
for i in a {
println!("{}", i);
}
Run Code Online (Sandbox Code Playgroud)
error[E0382]: use of moved value: `a`
--> src/main.rs:6:14
|
3 | for i in a {
| - value moved here
...
6 | for i in …Run Code Online (Sandbox Code Playgroud) Python 2.6.9 (unknown, Mar 7 2016, 11:15:18)
[GCC 5.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import subprocess
>>> subprocess.check_call(['echo', 'hi'], stderr=sys.stdout)
echo: write error: Bad file descriptor
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/subprocess.py", line 488, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['echo', 'hi']' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)
这个命令subprocess.check_call(['echo', 'hi'], stderr=sys.stdout)在Python 2.7和Python 3中运行得很好.什么是Python 2.6做的不同?
我想在libstd中进行一些更改,然后用玩具程序测试它们.看起来我可以libstd.so通过rust/src/libstd去做(夜间)来建立cargo build.一旦我完成了这个,我如何使用libstd而不是我系统上安装的常规版本来构建玩具程序?
我经常使用共享切片做这样的事情:
fn read_a_few_bytes(slice: &mut &[u8]) {
dbg!(&slice[..3]);
*slice = &slice[3..];
}
Run Code Online (Sandbox Code Playgroud)
今天我注意到,当切片可变时,这种方法不起作用:
fn read_a_few_bytes(slice: &mut &mut [u8]) {
dbg!(&slice[..3]);
*slice = &mut slice[3..];
}
Run Code Online (Sandbox Code Playgroud)
第二个例子给出了这个错误:
error: lifetime may not live long enough
--> src/main.rs:3:5
|
1 | fn read_a_few_bytes(slice: &mut &mut [u8]) {
| - - let's call the lifetime of this reference `'2`
| |
| let's call the lifetime of this reference `'1`
2 | dbg!(&slice[..3]);
3 | *slice = &mut slice[3..];
| ^^^^^^^^^^^^^^^^^^^^^^^^ assignment requires that `'1` …Run Code Online (Sandbox Code Playgroud) 我想编写一个使用 asyncio 管理子进程的库。我不想强迫我的调用者自己异步,所以我更愿意先得到一个new_event_loop,做一个run_until_complete,然后close它。理想情况下,我希望在不与调用者可能正在执行的任何其他异步操作发生冲突的情况下执行此操作。
我的问题是等待子进程不起作用,除非你调用set_event_loop,它附加了内部观察者。但当然,如果我这样做,我可能会与调用者中的其他事件循环发生冲突。一种解决方法是缓存调用者的当前循环(如果有),然后set_event_loop在我完成恢复调用者的状态后再调用一次。这几乎有效。但是如果调用者不是 asyncio 用户,调用的副作用get_event_loop是我现在创建了一个以前不存在的全局循环,如果程序退出而不调用close该循环,Python 将打印一个可怕的警告。
我能想到的唯一元解决方法是执行atexit.register关闭全局循环的回调。这不会与调用者冲突,因为 close 调用多次是安全的,除非调用者做了一些疯狂的事情,比如在退出期间尝试启动全局循环。所以它仍然不完美。
有没有完美的解决方案?
Vim具有“智能大小写”功能,使搜索不区分大小写,但前提是搜索包含所有小写字母。在搜索任何大写字母时,smartcase会假定您要区分大小写。有没有办法在zsh的制表符完成中获得相同的行为?
编辑:原来我的问题只是 Xmobar 中的一个临时错误。请参阅已接受的答案。
谷歌上有很多解决方案,但几乎没有一个对我有用。我正在建立一个 Arch 系统,所以我的第一个倾向是使用Arch wiki 上的配置。这是我的:
import XMonad
import XMonad.Hooks.DynamicLog
main = xmonad =<< xmobar defaultConfig { terminal = "gnome-terminal" }
Run Code Online (Sandbox Code Playgroud)
如果没有 xmobarrc(或我尝试复制的任何),xmobar 在空工作区中是可见的,但打开任何应用程序都会将其完全覆盖。尝试使用 Alt-b 切换栏空间不会将其恢复。我也试过逐字复制John Goerzen 的配置文件,但这也不起作用。
一个有效的 hack(来自 John Goerzen)是在我的 xinitrc 中启动托盘。当托盘运行时,它以某种方式成功地在屏幕顶部保留了空间,xmobar 也可以使用。但我想让 xmobar 自己工作。感谢您的任何建议。
rust ×3
python ×2
git ×1
git-checkout ×1
git-plumbing ×1
python-2.6 ×1
slice ×1
xmonad ×1
zsh ×1