Rust part8

■ このスレッドは過去ログ倉庫に格納されています
2020/01/24(金) 11:47:52.41ID:9oO1hUHl
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

前スレ
Rust Part7
http://mevius.5ch.net/test/read.cgi/tech/1563114707/
2020/06/21(日) 22:00:26.97ID:T8Yrab8u
>>793
これでどう?

impl<T> Iterator for Fibonacci<T>
where
T: From<usize> + Clone,
T: for<'a> AddAssign<&'a T>
797793
垢版 |
2020/06/21(日) 22:48:41.52ID:KswBNjV4
>>796
期待通り動きました!
for の使い方について調べたところこのへんにあるのを見つけたのですが、
どうにもはっきりとは理解できてないです。

https://doc.rust-lang.org/nomicon/hrtb.html

AddAssign が必要とされる個別の場面まで寿命の推測を遅らせるみたいな感じですかね?
798793
垢版 |
2020/06/21(日) 23:47:24.24ID:KswBNjV4
むしろ >>793 がどう解釈されてしまっていたのかにも解説が欲しい……
799793
垢版 |
2020/06/22(月) 00:26:04.06ID:H8+bL0cM
なんか見覚えある気がすると思って考えてたんだけど、
Haskell の forall と似てるんだな。
>>793 だと Fibonacci<T> の T の制約として解釈されてしまうから、
'a は Fibonacci<T> と同じ寿命ってことになっちゃうわけか。
2020/06/23(火) 23:09:33.48ID:ImTRmBX4
あるフォルダーに入っているファイルをWeb経由で見れるようにしたいのだがそういったことができるクレートあったりしますか?

現在Actix+teraで実装しようと考えていますがなかなかうまくいかないので・・・
2020/06/24(水) 02:24:42.93ID:ak6DHXg2
python3 -m http.server 8000
802デフォルトの名無しさん
垢版 |
2020/06/24(水) 03:07:05.31ID:tDxYjRXk
actix-webとactix-filesではだめなの
2020/06/24(水) 03:37:50.70ID:rM4tv+8j
Ruby なら、コマンドプロンプト・PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、これでブラウザからアクセスできる

http://localhost:8080
2020/06/24(水) 10:36:40.30ID:l/oN1z1j
>>803
rustのスレまで出張ってくるなよジジイ
2020/06/24(水) 12:04:47.26ID:4T6/LA8J
なぜrustでactix+tera を使いたいのか
学習目的?
2020/06/24(水) 13:42:57.67ID:zkd3Aeky
そういや、actixの作者がやる気なくしてた問題は解決したの?
2020/06/24(水) 14:34:48.81ID:rnWT6W+j
あの「とほほのWWW入門」に「Rust」と「Go言語」の入門コンテンツ追加へ【やじうまWatch】 - INTERNET Watch
https://internet.watch.impress.co.jp/docs/yajiuma/1260986.html

このサイトまだあったんだな
2020/06/24(水) 19:37:44.39ID:hh4NKeEg
>>805
あのテンプレートの書き方がDjangoに似てたので・・・(じゃあPythonでやれっていうのはなしで)


別に使わなくてもできるのならそれでいいんですが
2020/06/25(木) 18:06:43.52ID:8MiElZj2
warpがおすすめ
2020/06/26(金) 04:24:36.46ID:rzSuBmAQ
この前作ったツールではrouilleを使った
CLIツールにおまけのWeb UIを付けるため

シンプルで良かった
2020/06/29(月) 22:50:20.59ID:1itP0QVJ
アプリケーションの設定を管理するようなライブラリで変更時に知らせてくれるような機能があるのってgioクレートのSettings以外になんかありませんか?
812デフォルトの名無しさん
垢版 |
2020/06/30(火) 15:14:43.19ID:oMNW4x3G
const fn b(s: &'static str) -> usize {
s.len()
}
fn a(s: &'static str) -> usize {
b(s)
}
a("c");
const fn のこの例ってこの下に置き換えられる?
それともaがconstじゃないから置き換わらない?
fn a(s: &'static str) -> usize {
1
}
2020/06/30(火) 17:20:04.74ID:SQ1ey2jp
>>812
定数伝搬の最適化はconstとは関係なくかかるので
その例なら1になるかと。
const fnはconst値にバインドできるかどうか、というだけのはず。
814デフォルトの名無しさん
垢版 |
2020/06/30(火) 20:47:08.92ID:oMNW4x3G
>>813
じゃあハッシュテーブルとかのキー定数とかもコンパイル時にハッシュになってるの?
2020/07/01(水) 01:46:25.16ID:0X9xkDpt
ハッシュ値の生成に乱数使ってるからコンパイル時には決定できないはず
const fn な hasher が仮に存在するならハッシュ値まで生成されるかもしれなち
2020/07/01(水) 01:50:31.70ID:lPEzgDRr
>>815
乱数使ったらハッシュにならんだろ…
2020/07/01(水) 02:44:47.36ID:GH5MkCrA
>>816
ハッシュに乱数を混ぜるのは普通にある。
もちろんそのハッシュテーブルの寿命の間は一貫した値を使うけど。
2020/07/01(水) 09:56:23.65ID:QVn8MqAi
普通に、はなくね?
素数のマジックナンバーと比較してデメリットしかない
汎用性が下がる
コードが煩雑になる
テーブルサイズの整数倍になって効率低下する確率が上がる
2020/07/01(水) 10:24:41.03ID:dg6nNgDG
>>817
>ハッシュテーブルの寿命の間は一貫した値を使うけど。
キーの値から、ハッシュ値を計算する際、乱数を使っていて、
一貫した値をどうやって取得するの。

// pszKey = キーの0終端文字列
// 戻り値 = キーに対応した Hash値
DWORD CalcHash( const char *pszKey )
{
  DWORD hash;
  ・・・
  hash += 乱数; // こんな風にして、どうやって一貫性を確保する??
  ・・・
  return hash;
}
2020/07/01(水) 10:30:07.77ID:0X9xkDpt
hasherの初期化に乱数使う
ハッシュ値の生成のされ方が決定的だと
ユーザーが悪意のある入力列を与えることでハッシュ値の衝突を起こしてシステム負荷を高めるような攻撃ができちゃうのよ
それを避けるために多くの処理系では hasher の初期化に乱数を使ってハッシュ値の生成のされ方を予測しにくいようにしている
2020/07/01(水) 10:31:35.11ID:0X9xkDpt
乱数使うのは hasher の初期化だけで、
その後のハッシュ値計算は当然乱数は使わない
2020/07/01(水) 10:34:05.17ID:v1S9dNm/
なるほど
2020/07/01(水) 13:21:11.84ID:gL8G43CT
>>820
正直すまんかった
824デフォルトの名無しさん
垢版 |
2020/07/01(水) 20:39:53.77ID:LmVeoJWH
システム負荷を高めるような攻撃を回避するのって初期化に乱数使うとかじゃなくて、ハッシュテーブルの実装次第じゃね?
システム再起動の時に乱数で変わってたら保存してるハッシュと違くなるって整合性ぐちゃぐちゃすぎる

ちなみにRustは初期化に乱数使ってないけどどの言語がそれに当たるの?

悪いけどホラ吹いてるようにしてみえない
825デフォルトの名無しさん
垢版 |
2020/07/01(水) 21:21:04.78ID:V2OaFanu
ソルト
2020/07/01(水) 21:27:38.74ID:JqIYLyXt
>>824
By default, HashMap uses a hashing algorithm selected to provide resistance against HashDoS attacks. The algorithm is randomly seeded and …
https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html
827デフォルトの名無しさん
垢版 |
2020/07/01(水) 21:35:15.59ID:JRtBzTKp
ハッシュの生成はアルゴリズムに対して決定的なんだからハッシャーがどうのなんて馬鹿げてる
2020/07/02(木) 00:00:35.12ID:53deMRLD
Result<T,E> を要素とするイテレータを Result<Vec<T>,E> にしたくて、
よくありそうなパターンだと思うんだけどさらっと上手くやる方法ってないもんかな?
2020/07/02(木) 00:03:26.32ID:/WjV7J8q
>>828
collectがいい感じにやってくれるよ。
830デフォルトの名無しさん
垢版 |
2020/07/02(木) 01:46:12.20ID:T8l/o3UF
collect::<Result<Vec<_>, _>>()
831デフォルトの名無しさん
垢版 |
2020/07/02(木) 10:10:47.16ID:O6Sxhm4J
毎回乱数使ってるなら画面更新するたびにハッシュ変わるはずだよね?
https://play.rust-lang.org/?code=%23!%5Ballow(unused)%5D%0Afn%20main()%20%7B%0Ause%20std%3A%3Acollections%3A%3Ahash_map%3A%3ADefaultHasher%3B%0Ause%20std%3A%3Ahash%3A%3AHasher%3B%0A%0Alet%20mut%20hasher%20%3D%20DefaultHasher%3A%3Anew()%3B%0Alet%20data%20%3D%20%5B0x01%2C%200x23%2C%200x45%2C%200x67%2C%200x89%2C%200xab%2C%200xcd%2C%200xef%5D%3B%0A%0Ahasher.write(%26data)%3B%0A%0Aprintln!(%22Hash%20is%20%7B%3Ax%7D!%22%2C%20hasher.finish())%3B%0A%7D&edition=2018
変わらないよ?
2020/07/02(木) 10:42:54.83ID:NJoiTLER
>>831
HashMapと同じことをしたいなら、RandomStateからbuild_hasherでhasherを得ればよい。別に画面更新しなくてもRUN押す度に変わるよ。
2020/07/02(木) 10:47:40.50ID:NJoiTLER
ちなみにDefaultHasher::newで変わらないのは、単に内部的にSipHasher13::new_with_keys(0,0)を呼んでるから。
RandomStateがその0,0をランダムに変えている。
2020/07/02(木) 12:36:00.56ID:2uT/XA4a
Hash値の計算そのものも、本当はかなり速度が求められるものなので、それを
自在に変えるというのはどうやっているのか興味が有る。
Hash値そのものの計算は、遅いわけではないが、それでも膨大なデータを処理する
場合には、その問題になることがある。
835デフォルトの名無しさん
垢版 |
2020/07/02(木) 14:34:38.77ID:O6Sxhm4J
SipHasher13::new_with_keys(0,0)はソルト?シード?
2020/07/02(木) 18:18:58.79ID:53deMRLD
>>830
えっ、それでいけたんだ……。
知らんかった。
2020/07/02(木) 20:30:51.40ID:Smy47/2H
collect() があれば何でも出来る
2020/07/02(木) 21:18:08.94ID:16GApxSC
>>835
https://131002.net/siphash/siphash.pdf
これを読んだうえで好きに呼べばいい。
2020/07/02(木) 22:08:07.26ID:Er9yjZwy
collectが中でやってる事って std::convert::from か?
2020/07/03(金) 01:32:48.51ID:A3vf6ary
>>839
FromIterator::from_iter呼んでる
From呼ばれるかどうかはFromIteratorの実相次第だけど
普通はIterator::Itemがそのままコレクションのデータ型になるから呼ばれないと思う
2020/07/04(土) 01:28:15.59ID:MbDjr1Zt
これがコンパイルエラーになる(sum::<i64>()としないといけない)のってなんでですか?
let s: i64 = (0i64..10).sum() + 10i64;

推論できる材料は十分に見えるんですけども

ちなみにこれなら通ります
let s: i64 = (0..10).sum();
842デフォルトの名無しさん
垢版 |
2020/07/04(土) 07:36:29.64ID:mye4TJ7/
rangeはusizeだから
2020/07/04(土) 15:11:36.89ID:O/jhkl6h
>>841
ここに理由書いてるけど、詳しくはわからん

At the moment, we always refuse to guess the "self" type, so we just stop there.
For other type parameters, if Self is known, we will sometimes infer them based on Self
https://github.com/rust-lang/rust/issues/25094#issuecomment-304079316
2020/07/04(土) 22:58:43.94ID:6lRd4tzg
>>843
下位互換失うからじゃね?

>because it leads to regressions when new impls are added.
2020/07/05(日) 01:30:45.53ID:SD7XkwQZ
今までターボフィッシュで型指定しなくても動いてたものが
新しいimpl追加によって型指定がないと動かなくなるケースがあるというのは理解できる

ただ(0i64..10).sum()のケースはiter::Iterator::sumやiter::Sumの定義から
各要素がi64だと決まってる限り新しいimplが追加されても結果の型もi64にしかならないと思うんだよね

//iter::Iterator::sum
fn sum<S>(self) -> S where Self: Sized, S: Sum<Self::Item>
{
Sum::sum(self)
}

//iter::Sum
pub trait Sum<A = Self>: Sized {
fn sum<I: Iterator<Item = A>>(iter: I) -> Self;
}
846デフォルトの名無しさん
垢版 |
2020/07/05(日) 23:04:09.03ID:HzchPVMd
>>845
まず、

1) inference type(推論された型)と宣言時や実行時の型は別なんで、実行時の型はあくまで推論された型の外延でしかない。
すると、別の型互換のルール(たとえば、部分多相とか)がないと互換の型とみなせない。

2) 公開された部分を推論すると将来の変更で1)から互換性を失う場合がある。
最近型推論導入した言語が公開関数のシグネチャ等を推論しないのはこの問題が理由だと思う。

>ただ(0i64..10).sum()のケースはiter::Iterator::sumやiter::Sumの定義から
>各要素がi64だと決まってる限り新しいimplが追加されても結果の型もi64にしかならないと思うんだよね
これは単にメソッド呼び出しの生成規則: expr0 ". " expr2 [Turbofish] "()" のexpr0から推論しないルールが既にあるからできないだけじゃないの?
これを拡張すると2)から互換性を失う可能性がある。公開された型と関数のシグネチャに依存してるんで。
2020/07/06(月) 00:48:42.43ID:v1x+2Pdq
ぶぶんたそー
まれいたそー
848デフォルトの名無しさん
垢版 |
2020/07/09(木) 06:01:23.92ID:OnQC9Em2
Rustの構文を自分でPython風にしてるんだけど、このwhereのとこの構文がどうも末尾:と相性悪くてどうしたら綺麗になるか教えて欲しい。
問題点
* Self: Sizedの型指定の:と被る(引数の型はかっこに埋まってるからいい)
* 一行目の関数宣言の:があるのに二行目でもwhere使うために:がある(二行続くのは英文法的にもおかしい)
* whereの構文ルールが曖昧(改行入れたりできる) -> だから統一したい
fn sum<S>(self) -> S:
where Self: Sized, S: Sum<Self::Item>:
Sum::sum(self)
2020/07/09(木) 19:57:31.40ID:/c0BYhMm
Rust にトランスパイルされる Python 風構文の言語を作っているということかな?

fn sum<S>(self) -> S
where Self(Sized), S(Sum<Self::Item>):
Sum::sum(self)

こんな感じで class の継承っぽく書くのはいかが
850デフォルトの名無しさん
垢版 |
2020/07/09(木) 20:52:03.73ID:OnQC9Em2
そう、そういう言語作ってる最中。
たしかにその構文もいいね!でもstruct S(i32);に見た目上だけど被るのと、トレイトのfn name<T: Num>とかも構文変える必要でてくるなぁ
個人的にはトレイトベースの言語だからT: Numは変えたくないだよね
こういうのもいいかも
fn sum<S>(self) -> S,
(Self: Sized, S: Sum<Self::Item>):

whereと同じような機能でしっくりくる構文持ってる他言語とかないのかなぁ
2020/07/11(土) 09:57:59.11ID:4UmqnUG/
Haskell 風にするとかどうよ
852デフォルトの名無しさん
垢版 |
2020/07/11(土) 19:10:01.60ID:F8ozXmMr
Winrtよく知らないんだけどWindows環境でGUI簡単にいじれるようになったの?
2020/07/11(土) 19:28:45.72ID:9BHbJ5O9
どうせマクロ地獄だろ
854デフォルトの名無しさん
垢版 |
2020/07/14(火) 15:40:35.77ID:GDMj7Uve
let delta = input[0] - input[1];
println!("{}{}", if delta == 0 { "" } else if delta > 0 { "-" } else { "+" }, delta.abs());
このif delta == 0 { "" } else if delta > 0 { "-" } else { "+" }の綺麗な順番とかの定石の書き方ってある?
2020/07/14(火) 16:21:46.36ID:0FZUPBc1
match delta.cmp(&0) {
std::cmp::Ordering::Equal => "",
std::cmp::Ordering::Greater => "-",
std::cmp::Ordering::Less => "+",
}
2020/07/14(火) 18:24:58.52ID:Ott4Q6kl
n == 0の時だけ記号なしにしてそれ以外は{:+}でフォーマット
(n > 0の時だけ{:+}にするのでも結果は同じ)
857デフォルトの名無しさん
垢版 |
2020/07/14(火) 20:20:46.59ID:GDMj7Uve
>>855
>>856
ありがとう、両方いいね!
2020/07/15(水) 17:09:04.17ID:xmMpR3Y8
msvcとgnuってどっちにすべきなん?
2020/07/15(水) 20:29:35.32ID:hr2ndtrb
両方有るってことはどっちにでも出来るってこった。
どちらかが良いなんてことはない。
2020/07/15(水) 21:20:40.13ID:a3wypoik
rustコンパイルできないけどな
2020/07/16(木) 01:35:03.21ID:ky3/glay
以下のコードでクロージャclの引数に型推論が効かないのってなんでですか?
fn main() {
let vv = vec![vec![1, 2, 3]; 4];
let cl = |a, b, c, d| vv[a][b] + vv[c][d];
//error[E0282]: type annotations needed
println!("{}", cl(3usize, 1usize, 2usize, 2usize))

}
https://play.rust-lang.org/?version=stable&;mode=debug&edition=2018&gist=a49b194930fcdfd894c2be4fc078be80

クロージャclの引数のところを |a: usize, b, c: usize, d| とすればコンパイルは通るのですが、aとcだけ型注釈が必要になるのも意味がわからないです
2020/07/16(木) 23:09:40.63ID:NQlI+enB
jsonをパースして、その中身に対して更に値を追加し
最後にはまたjsonでシリアライズということをやりたいのですが、
serdeだと事前に入力と出力の型を定義していないと難しいですか?

from_stringでValue型に入れて、mapのようにキー名で値を取れることは分かったのですが
そこに新たに値を追加する方法がわからないです
863デフォルトの名無しさん
垢版 |
2020/07/16(木) 23:23:19.49ID:iYXNZZst
as_object_mut
あたりかな
2020/07/17(金) 00:05:43.64ID:wlvhc7i8
https://blog.rust-lang.org/2020/07/16/Rust-1.45.0.html

予定通り来た
Rocketがstableの仲間入り
2020/07/17(金) 01:59:14.04ID:ppPvs5zR
>>863
ありがとう神様

C#ならすぐなのに、
これは理解するのに時間がかかりそうだ。
866デフォルトの名無しさん
垢版 |
2020/07/18(土) 18:30:51.49ID:XPr1Z8D3
神がついてるから大丈夫
867デフォルトの名無しさん
垢版 |
2020/07/20(月) 13:18:08.21ID:8IyUCuKf
actix-wevからRocketに移行します
2020/07/21(火) 02:22:25.82ID:119VIs66
>>867
その理由は?
2020/07/21(火) 18:35:05.91ID:jydcaLWL
スライスから差集合を作るの際にスライスをそれぞれhashsetにしてdifference呼ぶ以外で良い書き方ありますか?
2020/07/22(水) 00:13:53.48ID:g6BKSYlu
それぞれsortして先頭から比較していく
2020/07/22(水) 01:18:16.47ID:EHcGprvb
>>869
シンメトリックじゃない単なる差集合なら
片方だけsetにしてもう片方の要素でループしながらチェックするのでもいい気がする
あと状況によってはBroom filterみたいなのを使うと高速化できるかも
872デフォルトの名無しさん
垢版 |
2020/07/22(水) 13:33:09.23ID:toRz6DNg
fn aaa(s: &str) {
if s == "aaa" {
compile_error!(r"If s is "aaa", compile error!");

}
}
fn main() {
// compile error!
aaa("aaa");
// can compile
aaa("aaaaaaaa");
}

こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルになるんだけど回避方法ってないかな
873デフォルトの名無しさん
垢版 |
2020/07/22(水) 13:33:41.15ID:toRz6DNg
こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルになるんだけど回避方法ってないかな

こういう風にコンパイル時にコンパイルエラー出したいんだけど、実際はcompile_error!を書いてる時点でコンパイルエラーになるんだけど回避方法ってないかな
2020/07/22(水) 15:44:52.79ID:vLwW7fFZ
>>870
>>871
d
2020/07/22(水) 15:48:48.87ID:uZAjXvzm
ダブルクォートがaaaの部分で外れてるのが原因とかじゃなくて?
876デフォルトの名無しさん
垢版 |
2020/07/22(水) 15:58:57.61ID:6Pdi74ki
aaa(r#"aaa"iiii"uuuuu"#)
877デフォルトの名無しさん
垢版 |
2020/07/22(水) 16:04:28.78ID:toRz6DNg
>>875
ごめん。ここに貼る用のデバッグコメ。
そこ直したら本題の条件分岐のコンパイルエラーにならないのがでてくる
compile_error!(r#"If s is "aaa", compile error!"#);
2020/07/22(水) 18:44:16.24ID:EHcGprvb
compile_error!は条件付きコンパイルかマクロでしか使えないんじゃ?
compile_error!と記述してる行がコンパイルするコードに含まれることになったらコンパイルエラー

マクロを展開する段階では変数の値を評価できないから
文字列を受け取る関数に対して特定の文字列を渡すコードがあったらコンパイルエラーってのは無理な気がする
2020/07/22(水) 22:19:16.93ID:ItqkS36e
aaaを手続きマクロにすればできるとは思うけど。
880デフォルトの名無しさん
垢版 |
2020/07/23(木) 01:38:31.65ID:es6swX3J
最近RustのSlackでも出てきた福野泰介ってやつ声でかいよな
こいつどのコミュニティでも何かしら主張して目障りだわ
881デフォルトの名無しさん
垢版 |
2020/07/23(木) 01:41:56.15ID:5yzO6ql9
Ubuntu Japanese Team に言いつけて潰してもらおうぜ
882デフォルトの名無しさん
垢版 |
2020/07/23(木) 18:56:28.53ID:Qx3jp5Nz
環境はMacOS Catalina, Rustは1.45.0です
今弄ってる物(https://github.com/Nercury/rust-and-opengl-lessons)で
/lib/gl/src/lib.rs内に
include!(concat!(env!("OUT_DIR"), "/binding.rs"));
というのがあるのですがですがcargo buildすると
this error originates in a macro
error: couldn't read /Users/Path/target/debug/build/gl-71effbf83f5b03a9/out/binding.rs: No such file or directory (os error 2)
と表示されます
https://github.com/rust-analyzer/rust-analyzer/issues/1964
https://github.com/rust-skia/rust-skia/issues/10
などを見たのですが具体的な修正がわかりませんでした。
Rustは最近始めたばかりでincludeマクロやcargoの仕組みなどまだあまり詳しくありません
このinclude!を成功させる方法を教えてください
迷惑をかけてしまうかもしれませんがご教授お願いします
2020/07/23(木) 19:05:44.31ID:es6swX3J
福野泰介はたしかにどこでも目立つ。
自己顕示欲もあそこまでいったら面白い、反面教師として役立つ
2020/07/23(木) 21:20:06.43ID:DkkvFejZ
>>882
lib/gl/build.rsでOUT_DIRにbinding.rsを作成してる

ビルドスクリプトが意図した通りに動いているのか確認するために
build.rsを変更してbinding.rsのフルパスをprintlnでもするようにして
cargo build -vvしてみるといいと思う

ビルドスクリプトについて詳細知りたければこの辺読んで
https://doc.rust-lang.org/cargo/reference/build-script-examples.html
885デフォルトの名無しさん
垢版 |
2020/07/24(金) 00:48:59.83ID:j+hLU6yH
>>884
ありがとうございます動きました!
非常に長文だった自覚はあるんですが分かりやすくすっきりした回答ありがとうございますm(_ _)m
886デフォルトの名無しさん
垢版 |
2020/07/24(金) 10:22:52.41ID:c87Ipt6p
同じサーバー内でポート別にクライアント用サーバー(Nuxt)とAPI用サーバー(Rust)立ち上げるのってどう思う?
クライアント用サーバーは初回しか性能響かないからあれだけど、Rustの方が断然速いし、SPAだからルートの設定も全然しなくていいし、Rustの方でフロントページも返した方がいいんじゃないかと思ってるんだけども
要はRustを実行すればポート別に2つサーバーが立ち上がるようにするってこと
2020/07/25(土) 18:01:19.70ID:n+xx7yT/
RocketってRust公式サイトにも使われてるのか
迷ったらRocketで良さそうだな
888デフォルトの名無しさん
垢版 |
2020/07/26(日) 03:19:09.22ID:XCGG5OQ8
diesel使いづらくない?
2020/07/26(日) 18:57:03.68ID:uWZribv0
rustcの-C llvm-args=が取り得るオプションの説明ってどこかに書いてある?
clangのttps://clang.llvm.org/docs/ClangCommandLineReference.html#x86
あたりがそれっぽいけど説明が全くないのでデフォルト値も効果もよく判らない
2020/07/26(日) 22:31:29.89ID:T2XYMYOv
>>889
ここに書いてあるけど'--help'を渡せば一覧表示されるみたいよ
https://doc.rust-lang.org/rustc/codegen-options/index.html#llvm-args

$ rustc -C llvm-args='--help'
891デフォルトの名無しさん
垢版 |
2020/07/26(日) 23:02:23.88ID:XCGG5OQ8
あるモジュールクラスを別のモジュールで使いたい場合ってどう宣言するのが正しいの?

正直ドキュメント読んでも分からん
2020/07/26(日) 23:58:47.45ID:uWZribv0
>>890
サンキュ。そう使うのかよw うちの環境では
>rustc -C llvm-args=--help ←'を付けると怒られる
でそれっぽいのが得られました。amd64で使用命令を選択するようなオプションは無いのか・・・
2020/07/27(月) 00:46:16.95ID:TQCIWmFu
--helpの最後に出てたけど
利用可能なオプションを全部表示するには
llvm-args=--help-hiddenってするみたい
2020/07/27(月) 09:47:21.61ID:s6eJseAH
chronoのnext_monthないのってどう実現すればできる?
2020/07/27(月) 10:10:01.73ID:0SvTsOI7
>>894
そもそもnext_monthに何を期待するかによると思うが。30日後?31日後?翌月の同じ日?それが存在しない場合は?とか。その辺がはっきりすれば、その通りに実装すればいい。
2020/07/27(月) 10:18:30.24ID:0SvTsOI7
翌月の同じ日ならこれかな。
https://docs.rs/chrono/0.4.13/chrono/trait.Datelike.html#tymethod.with_month
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況