小编Ayu*_*hra的帖子

我们可以在过程宏属性中获取调用者的源代码位置吗?

我需要获取每个方法的调用者的源位置。我正在尝试创建一个proc_macro_attribute来捕获位置并打印它。

#[proc_macro_attribute]
pub fn get_location(attr: TokenStream, item: TokenStream) -> TokenStream {
    // Get and print file!(), line!() of source
    // Should print line no. 11
    item
}
Run Code Online (Sandbox Code Playgroud)
#[get_location]
fn add(x: u32, y: u32) -> u32 {
    x + y
}

fn main() {
    add(1, 5); // Line No. 11
}
Run Code Online (Sandbox Code Playgroud)

rust rust-macros rust-proc-macros

6
推荐指数
2
解决办法
2589
查看次数

如何在 Rust 中获取定位索引处的位值?

我正在尝试执行下面的程序。

fn main() {
    let a: u8 = 0b00000001;
    let b: u8 = 0b10101010;
    let c: u8 = 0b00001111;
    let length = a.count_ones() + a.count_zeros();
    for n in 0..length {
        println!("{}", a[n]);
        println!("{}", b[n]);
        println!("{}", c[n]);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我越来越error[E0608]: cannot index into a value of type `u8`

rust rust-cargo

6
推荐指数
1
解决办法
7510
查看次数

运行 mvn org.mortbay.jetty:jetty-maven-plugin:run 时出现“打开文件过多”异常

在我的一个项目中,我使用了 Lift 2.5 M4 和 Scala 2.10.0。在这个项目中,我使用的是Jetty 8.1.10.v20130312。但是在通过 mvn jetty 运行项目时,我遇到了意外的异常。

我已经通过以下方式在 pom.xml 中配置了 jetty 插件:

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.10.v20130312</version>
            <configuration>
                <systemProperties>
                    <systemProperty>
                        <name>org.apache.cocoon.log4j.loglevel</name>
                        <value>WARN</value>
                    </systemProperty>
                </systemProperties>
                <connectors>
                    <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                        <port>9090</port>
                        <maxIdleTime>30000</maxIdleTime>
                    </connector>
                </connectors>
                <webApp>
                    <contextPath>/</contextPath>
                </webApp>
                <scanIntervalSeconds>0</scanIntervalSeconds>
                <stopKey>stop</stopKey>
                <stopPort>9999</stopPort>
            </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我在运行命令时遇到以下异常:- mvn org.mortbay.jetty:jetty-maven-plugin:run

2013-04-24 06:49:39.216:警告:oeja.AnnotationParser:异常java.io.FileNotFoundException:/home/ayush/scala-lift/knolgame/target/classes/com/knolgame/lib/TransactionStatus$$anonfun$在 java.io.FileInputStream.open(本机方法) 处找到 $1.class (打开的文件太多) 在 java.io.FileInputStream.(FileInputStream.java:106) 处 org.eclipse.jetty.util.resource.FileResource.getInputStream (FileResource.java:286)在org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:754)在org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747)在org.eclipse。 jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:747) 在 org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:第747章)

但是当我使用jetty 6.1.25时,它工作正常。

<plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.25</version>
            <configuration>
                <systemProperties>
                    <systemProperty>
                        <name>org.apache.cocoon.log4j.loglevel</name>
                        <value>WARN</value>
                    </systemProperty>
                </systemProperties>
                <connectors>
                    <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                        <port>9090</port>
                        <maxIdleTime>30000</maxIdleTime>
                    </connector> …
Run Code Online (Sandbox Code Playgroud)

jetty maven maven-jetty-plugin jetty-8

5
推荐指数
1
解决办法
1万
查看次数

无法了解Vector in Rust的行为

我正在阅读《用向量存储值列表》一章。我正在尝试这个例子Attempting to add an element to a vector while holding a reference to an item

let mut _v: Vec<i32> = vec![2, 4, 6];
let _first = &_v[0];
_v.push(8);
println!("{:?}", _first);
Run Code Online (Sandbox Code Playgroud)

按照预期的行为,它没有编译。根据这本书:

当程序具有有效的引用时,借用检查器将执行所有权和借用规则(在第4章中介绍),以确保该引用和对向量内容的任何其他引用保持有效。回想一下规则,该规则指出在同一范围内不能有可变和不可变的引用。该规则适用于清单8-7,其中我们对向量中的第一个元素持有不变的引用,并尝试将元素添加到末尾,这将不起作用。

但是,如果删除最后一条println语句,则上面的代码将被编译。我无法理解println!宏如何影响上述陈述。

如果我有任何遗漏,请告诉我。

rust

3
推荐指数
1
解决办法
119
查看次数