如果我想得到matcha的结果rand::thread_rng().get_range(1, 3),我需要添加一个_值,即使我知道只有两个可能的值:
match rand::thread_rng().gen_range(1, 3) {
1 => println!("1"),
2 => println!("2"),
_ => panic!("never happens")
};
Run Code Online (Sandbox Code Playgroud)
该_案件是无用的,但需要.
我理解编译器不能猜测gen_range(1, 3)只能返回1或2,但有没有办法避免添加这个无用的行_ => panic!("never happens")与模式匹配(可能有一些提示编译器)?或者我需要替换最后一个值(2)_吗?
我有一个Elements 数组,我想迭代它来做一些事情,然后遍历循环中的所有Elements来做一些事情.元素之间存在关系,所以我想迭代到所有其他元素来检查一些东西.这些元素是可变引用的原因.它有点宽泛,但我想成为一般(也许我不应该).
struct Element;
impl Element {
fn do_something(&self, _e: &Element) {}
}
fn main() {
let mut elements = [Element, Element, Element, Element];
for e in &mut elements {
// Do stuff...
for f in &mut elements {
e.do_something(f);
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如所料,我收到了这个错误:
不能
Element一次多次借用可变的东西
我知道这是Rust中的正常行为,但是建议的方法是什么来避免这个错误?我应该先复制元素吗?忘记循环并以不同的方式迭代?了解代码设计?
有生锈的方法吗?
免责声明:我知道这是一个常见的错误,可能会在别处回答,但我又一次失败了.我没有找到相关的答案,也许我不知道如何搜索.对不起,如果它是重复的.
是否有内置的方法来验证带有验证规则的UUID?我在" 可用验证规则 "文档中没有找到任何相关信息.
我正在使用Laravel Dusk测试具有子域路由的Web应用程序。如果某种验证无效,我在子域之间会有一些重定向。
因此,我的目标是创建visit一个URL,$a然后断言我已被重定向,而新的URL是$b。
我可以:
$browser->visit($a);
Run Code Online (Sandbox Code Playgroud)
但是我不知道在检查当前URL是什么之后马上要做什么。
根据MDN,我应该使用datetime-localtype 来输入日期和时间:
<input type="datetime-local">
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码(在控制器中)验证 Laravel 中的日期:
$this->validate($request, ['my_date' => 'required|date']);
Run Code Online (Sandbox Code Playgroud)
但是有没有办法验证 adatetime-local呢?
SELECT在WHERE EXIST子句的子查询中我有什么?
这是一个带有WHERE EXIST子句的随机查询:
SELECT a.*
FROM a
WHERE EXISTS
(SELECT *
FROM b
WHERE b.a_id = a.id)
Run Code Online (Sandbox Code Playgroud)
所以,*被选中了b.但这对我没有意义,因为我不想选择任何东西(除非我误解了它的行为WHERE EXIST).我可以选择,1但这似乎也很奇怪.
我认为它在执行速度方面并不重要,任何事情都可行,但它在可读性和"语义"方面可能很重要.(我不确定我用过的词!).这有什么最好的做法吗?如果是这样,为什么选择另一种方式?
我有一个复杂的原始SQL查询,我不想将其转换为查询生成器。有没有办法将查询结果映射到模型?
简而言之,我有这种查询:
SELECT users.* FROM users
WHERE exists (super_long_raw_query)
AND many_more_raw_where_clauses
ORDER BY something_complex
etc;
Run Code Online (Sandbox Code Playgroud)
它仅返回一个模型(对应于一个模型的表)中的列。
将其转换为“ Laravel查询生成器”查询将是可怕的并且不可读:
User::where(/* ... */)
->whereExists(function() { /* super complex callback */ } )
->etc(/* ... */)
Run Code Online (Sandbox Code Playgroud)
原始查询更易于阅读(在这种情况下)。
有没有办法将原始查询映射到模型?(假设它仅返回特定模型的列)
附注:这是一个原始查询使用查询参数(?,:something),因为我不想打针。
假设我有以下测试用例(使用jest和supertest):
describe('Test actors', async () => {
const params = { /* ... */ }
let actorId
test(`Create an actor ${actorsUrl}`, async () => {
const response = await request(app.callback())
.post(actorsUrl)
.send(params)
.set('Accept', 'application/json')
.set('Content-Type', 'application/json')
.expect(200)
expect(response.body.name).toBe(params.name)
expect(response.body.address).toBe(params.address)
actorId = response.body.id
})
test(`Get the actor created ${actorsUrl}/${actorsUrl}`, async () => {
const response = await request(app.callback())
.get(`${actorsUrl}/${actorsUrl}`)
.set('Accept', 'application/json')
.expect(200)
expect(response.body.name).toBe(params.name)
expect(response.body.address).toBe(params.address)
})
})
Run Code Online (Sandbox Code Playgroud)
我想在运行第二个测试之前等待第一个测试完成(因为第一个测试创建了一个Actor,而第二个测试则向API询问了创建的Actor)。运行该代码失败,因为尚未创建角色。
有没有办法在调用第二个测试之前等待第一个测试完成?
有没有办法修剪对象的所有属性?换句话说,我可以更改一下:
{a: ' a', b: 'b ', c: ' c '}
Run Code Online (Sandbox Code Playgroud)
对此:
{a: 'a', b: 'b', c: 'c'}
Run Code Online (Sandbox Code Playgroud)
看来我无法映射对象,那么如何将函数应用于所有属性并获取对象呢?
我正在尝试在 next.js 应用程序上监听路由更改,以便将导航记录到 matomo(又名 piwik)。根据 next.js 的文档,我必须做这样的事情:
Router.events.on('routeChangeStart', url => {
// Do something
});
Run Code Online (Sandbox Code Playgroud)
我必须在我的应用程序中的何处使用此代码才能记录所有路线更改事件?
(“where”表示在哪个文件/类/方法中)
laravel ×4
laravel-5 ×4
javascript ×3
php ×3
laravel-5.5 ×2
rust ×2
ecmascript-6 ×1
eloquent ×1
jestjs ×1
laravel-5.4 ×1
laravel-5.6 ×1
laravel-dusk ×1
matomo ×1
next.js ×1
node.js ×1
piwiktracker ×1
postgresql ×1
reactjs ×1
sql ×1
supertest ×1
unit-testing ×1