我想更好地重新实现在防锈(主要是盒),以了解它的一些STDLIB智能指针,我来自一个C的背景,其具有简单malloc
和free
功能,但锈蚀的alloc
和dealloc
需要一些Layout
。它是什么?文档中并没有真正解释它。
pub struct Entity {
name: String,
}
fn walk<T>(entity: T) {
eprintln!("{} walked", entity.name);
}
Run Code Online (Sandbox Code Playgroud)
目前以下代码无法编译,因为类型 T 没有字段name
。
我知道 Rust 有特征限制,是否有一些“字段限制”?
我真的必须:
trait HasName {}
impl HasName for Entity {}
fn walk<T: HasName>(entity: T) {
eprintln!("{}", entity.name);
}
Run Code Online (Sandbox Code Playgroud)
哦等等,这也无法编译!
这是一个工作示例
我的意思是,一定有比这更简单的事情。
也许像 JavaScript 中那样进行某种结构解构?
我试图解决这个问题
当我创建一个char *
并将其传递给 scanf 时:
char* input = "";
scanf("%s", input);
Run Code Online (Sandbox Code Playgroud)
它的行为很奇怪。
但是,当我更改定义并将 1000 个字符初始化为\0
:
char input[1000] = { '\0' };
Run Code Online (Sandbox Code Playgroud)
它表现得很好。为什么会这样?
我需要在单击时水平移动按钮内的文本以产生 win95 风格的单击效果。
我试过用翻译来做,但这会移动整个按钮,而不仅仅是它的内容。如何移动文本?我想避免在按钮内创建元素或弄乱填充。
body {
background-color: #008080;
}
button {
background-color: #C0C0C2;
color: #000;
padding: 5px 12px;
border-top: 2px solid #fff;
border-left: 2px solid #fff;
border-bottom: 2px solid #000;
border-right: 2px solid #000;
}
button:active {
border-top: 2px solid #000;
border-left: 2px solid #000;
border-bottom: 2px solid #fff;
border-right: 2px solid #fff;
}
Run Code Online (Sandbox Code Playgroud)
<button type="button">Click me!</button>
Run Code Online (Sandbox Code Playgroud)