小编wma*_*ees的帖子

扩大生锈时间

我有一些我正在与之抗争的代码.这是一个小辅助函数,它应该返回一个Vec<&str>调用函数.但是,我似乎无法让生命保持正确.

这是代码片段:

fn take_symbol<'a>(ch: &'a str, current: &'a mut String) -> &'a mut TokenList<'a> {
    let out = TokenList::<'a>::new();

    out.push(current.as_str());
    out.push(ch);

    *current = String::new();

    &mut out
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我:error: 'out' does not live long enough并且引用必须在生命周期内有效'a,但它看起来像是为它定义的'a.

我也尝试将其更改为:

let out = &mut TokenList::<'a>::new();
Run Code Online (Sandbox Code Playgroud)

这不会改变任何错误消息.要么:

let out = &'a mut TokenList::<'a>::new();
Run Code Online (Sandbox Code Playgroud)

编译器完全不喜欢它.

如何定义out一生'a

有关更多详细信息,请参阅我对TokenList的定义:

pub type Token<'a> = &'a str;
pub type TokenList<'a> = Vec<Token<'a>>;
Run Code Online (Sandbox Code Playgroud)

lifetime rust

11
推荐指数
1
解决办法
610
查看次数

Spring-Batch bean的"Step"或"Job"范围?

我正在使用Spring-Batch v3.0.0进行批量导入.有一个StepScope和一个JobScope.我怎么知道哪一个合适?

例如,如果我定义一个自定义ItemReaderItemWriter应该使用特定的自定义EntityManager,它可能如下所示:

@Bean
@Scope("step") //@Scope("job") //custom scope required to inject #jobParameters
public JpaItemWriter<T> jpaItemWriter(EntityManagerFactory emf) {
    JpaItemWriter<T> writer = new JpaItemWriter<T>();
    writer.setEntityManagerFactory(emf);
    return writer;
}
Run Code Online (Sandbox Code Playgroud)

但是哪个范围就在这里?为什么?

step范围的执行有效,但我觉得itemWrite应该是job范围的,这样它们就不会在每一步都重新创建.

我尝试切换stepjob,但是会抛出以下错误: Exception in thread "main" java.lang.IllegalStateException: No Scope registered for scope 'job'

java spring batch-processing spring-batch

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

创建由数字参数化的泛型类型

我正在Rust写一个NGram库.我想创建一个'通用'ngram,其中大小不需要在编译时确定(与我编码时相反).一些小代码可能有助于说清楚.

这基本上是我想要做的:

pub type Ngram<N> = Vec<[String; N]>;
Run Code Online (Sandbox Code Playgroud)

然后使用它,你只需要做这样的事情:

let vec = Ngram::<5>::new();
Run Code Online (Sandbox Code Playgroud)

你会创造一个5克(或更准确地说,a Vec<[String; 5]>).这样的事情是可能的.我真的不想做这样的事情:

 pub type Ngram<N> = Vec<N>;
 ...
 let vec = Ngram::<[String; 5]>::new();
Run Code Online (Sandbox Code Playgroud)

这大多会破坏创建类型的目的.

generics rust

10
推荐指数
2
解决办法
567
查看次数

OpenGL32.lib 未正确链接

出于某种原因,我的 OpenGL 库文件没有为 Visual Studio 2013 正确链接。

这是我的所有代码:

#include <gl\glew.h>
#include <GL\GL.h>
#include <GL\GLU.h>
#include <GL\freeglut.h>

#include <iostream>
#include <cstdlib>

#pragma comment( lib, "OpenGL32.lib" )
#pragma comment( lib, "glu32.lib" )
#pragma comment( lib, "freeglut.lib" )

void init( void );
void display( void );

int main( int argc, char* argv[] )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_RGBA );
    glutInitWindowSize( 512, 512 );
    glutInitContextVersion( 4, 0 );
    glutInitContextProfile( GLUT_CORE_PROFILE );
    glutCreateWindow( argv[0] );

    glutDisplayFunc( display );

    glutMainLoop();

    return EXIT_SUCCESS;
}

void …
Run Code Online (Sandbox Code Playgroud)

c++ opengl visual-studio-2013

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