我有 Java 背景,正在学习 Rust。在Java中,我通常会import java.util.ArrayList;. 据我了解,这是一种方便,可以防止需要java.util.在每次出现ArrayList.
考虑以下 Rust:
use std::io;
use std::io::Write;
fn main() {
print!("Hello World!");
// Let's flush the Buffer
io::stdout().flush().expect("Oh No!");
}
Run Code Online (Sandbox Code Playgroud)
如果第一个use被删除,io则不再指定。我们可以通过添加std::before来解决这个问题io。
该程序现在如下所示:
use std::io::Write;
fn main() {
print!("Hello World!");
// Let's flush the Buffer
std::io::stdout().flush().expect("Oh No!");
}
Run Code Online (Sandbox Code Playgroud)
引起我兴趣的是第二个use- 需要flush在标准输出上使用该方法。这让我的 Java 类比非常不愉快——我期望flush成为“stdout事物”的一部分,如果我拥有该事物,我就可以使用这些方法——但这里的情况显然不是这样。
是否可以在没有第二个的情况下编写上面的程序use?如果是这样,完整指定的语法是什么flush?
到底是怎么回事?
通过下面的一些有用的评论解决了。链接的问题虽然不是同一个问题,但确实有相似的答案。
有问题的行:
std::io::stdout().flush().expect("Oh …
在搜寻了数天的互联网之后,我发现了一个似乎可以解决我的目标的问题。(我正在尝试绘制/编辑图像中的单个像素,然后进行渲染。)在上述问题中,提问者要求提供Black BufferedImage的代码。顶部的Answer提供了该代码,并且看起来很漂亮,直到您尝试将其更改为黑色以外的其他颜色为止。这是代码:
package myProjectPackage;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import javax.swing.*;
public class Copypasta {
public static JFrame frame;
BufferedImage img;
public static int WIDTH = 500;
public static int HEIGHT = 500;
public Copypasta() {
}
public static void main(String[] a){
Copypasta t=new Copypasta();
frame = new JFrame("WINDOW");
frame.setVisible(true);
t.start();
frame.add(new JLabel(new ImageIcon(t.getImage())));
frame.pack();
// Better to DISPOSE than EXIT
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public Image getImage() {
return img;
}
public void start(){
img = …Run Code Online (Sandbox Code Playgroud)