我在本地机器上设置了一个git存储库,在一个linode机器上设置了一个裸存储库.在进行git推送时没有错误,但我没有在远程服务器上看到该文件.我遵循的命令序列如下:
在远程:
abhijat@kangaroo:~$ mkdir dev
abhijat@kangaroo:~$ cd dev && git init --bare
Run Code Online (Sandbox Code Playgroud)
在本地机器上:
krypton:test abhijat$ git init
krypton:test abhijat$ vim app.py
krypton:test abhijat$ git init
Initialized empty Git repository in /Users/abhijat/dev/test/.git/
krypton:test abhijat$ git add .
krypton:test abhijat$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: app.py
#
krypton:test abhijat$ git commit -m 'test first commit'
[master (root-commit) 3bee148] test …Run Code Online (Sandbox Code Playgroud) 我有一个哈希映射的引用(data在下面的代码中),我想将其克隆到一个新的、拥有的哈希映射中。克隆参考给了我一个新的参考,这不是我需要的。
我还尝试对data引用进行迭代 + 映射,并单独克隆键和值对,然后进行收集,但这也不起作用。这是一个最小的工作示例:
use core::cell::Cell;
use std::collections::HashMap;
use std::collections::HashSet;
use std::rc::Rc;
struct Dummy<K, V> {
dirty: Rc<Cell<bool>>,
data: Cell<Option<HashMap<K, HashSet<V>>>>,
}
impl<K, V> Dummy<K, V> {
fn persist(&self, prefix: &str, data: &HashMap<K, HashSet<V>>) {
self.dirty.set(true);
self.data.set(Some(data.clone()));
}
}
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
error[E0308]: mismatched types
--> src/lib.rs:14:28
|
14 | self.data.set(Some(data.clone()));
| ^^^^^^^^^^^^ expected struct `std::collections::HashMap`, found reference
|
= note: expected type `std::collections::HashMap<K, std::collections::HashSet<V>>`
found type `&std::collections::HashMap<K, std::collections::HashSet<V>>`
Run Code Online (Sandbox Code Playgroud)
(固定链接到操场)
这段代码的目的是通过Dummystruct观察hashmap的内容,用于单元测试。
我猜这个问题是因为给定泛型类型没有办法确定如何深度克隆键和值对象?
有没有办法在给定对现有哈希图的引用的情况下创建新的哈希图?