Rust Part5
レス数が950を超えています。1000を超えると書き込みができなくなります。
どうもありがとう。でもちょっとニュアンスが違う。
struct 2d {x, y}
struct 3d extends 2d { z }
で3dが2dのxとyのフィールドと独自のzを持つようなかんじ
マクロで出来ないか精一杯やってみたが出来なかった
元となるstructごとにマクロ作ればできるんだけどそれじゃ意味ないし struct A {int size; char data[];}
みたいなのをRustから読み書きするインターフェイスを考えてみた
enum PTR {}
struct A {p:*mut PTR}
impl A {
fn new(ptr:*mut PTR) -> Self {A {p:ptr}}
fn get_size(&mut self) -> i32 {unsafe {*(self.ptr as *mut i32).offset(0)}}
fn set_size(&mut self, n:i32) {unsafe {*(self.ptr as *mut i32).offset(0) = n;}}
fn data(&mut self) -> &mut [u8] {unsafe{std::slice::from_raw_parts_mut((self.ptr as *mut u8).offset(4), self.get_size() as usize)}}
}
fn main() {
let mut s:[u8;14] = [10,0,0,0,1,2,3,4,5,6,7,8,9,0];
let mut x = A::new(s.as_ptr() as *mut PTR);
println!("x.get_size()={}", x.get_size());
println!("x.data()[0]={}", x.data()[0]);
println!("x.data()[1]={}", x.data()[1]);
x.set_size(7);
println!("x.get_size()={}", x.get_size());
x.data()[1] = 225;
println!("x.data()[1]={}", x.data()[1]);
println!("s[5]={}", s[5]);
}
実行結果
x.get_size()=10
x.data()[0]=1
x.data()[1]=2
x.get_size()=7
x.data()[1]=255
s[5]=255
美しくないコードだ・・・
メインのRustコードにunsafeを書きたくないので全てstructに突っ込んだらこうなった
dataはslice経由で比較的自由に読み書き出来るけど、sizeは任意のアドレスを挿している数値型の作り方が判らないので関数が2つに rustからrust-bindgenが吐いたC++のクラス使うのめんどくさいな ところで、全然話変わるんだけどさ、mutってどう発音してる?
自分は「むっと」ってよんじゃってて、なんか、かっこわるいんだけど。 >>862
いつまでtanakhなんてスパコン詐欺師を崇めるんだろうなこのスレの住人 「nvidiaの倒し方、知らないでしょ?オレらはもう知ってますよ」 実際green500で倒してるんだからたいしたものだよ WebアプリをRustで書くって、どういう需要があるの?
ラズパイみたいな環境? 車買ったらムダにドライブしたくなるじゃん。すぐ飽きるのに。
あんな感じ。 クライアントサイドとサーバサイドで同じコードが使えるって話ちゃうのん? 同じ言語
だな
それはnode.js環境も同じだが 全部rustって需要はあんまりない気がするけど、サーバ側ならかなりマッチしてる サーバーサイド → Rust
クライアントサイド → Rust
ブラウザ → Rust
完璧じゃないか やたらノンブロッキングに拘ってるけど、それが本当に必要な人ってごく一部だよね
人気サービスの中の人だけ
普通はスレッド立てまくりで対応可能だし、たまに台数増やすだけで問題ないでしょ? 真のアイルランド人はノンブロッキングなど必要としないwww >>884
白紙の未来を絶望に染めてやろう。
あれもうかなり古いぞ。
rust 2018で今よりさらに変わるんだぞ。
エラーハンドリングもモジュールもTraitも重要な部分全部かわるぞ。
nightlyで結構実装済みだから現行のnightlyですら違うぞ。
macro 2.0はいいぞ! >>885
Rust 2018にエラーハンドリングの変更とかあったっけ?
Rust 2018での追加・変更って"module, impl trait, Generators/async/await, macros 2.0, NLL, SIMD"だけじゃなかったっけ?
もしかしてdo catchがstable化されるの?それとも、それ以外で変更があるの?
エラーハンドリングで互換性を崩すような変更があるならかなり痛いんだけど… https://github.com/rust-lang/rfcs/blob/master/text/2388-try-expr.md
2018からtryがキーワードとして予約される(catchは廃案)
editionが未完成だと実装できないから2018リリースにはきっと間に合わない RustもC++みたいに何年かおきに大きく変更されるの? こないだ1.0になったばかりな気がするんだが。仕事じゃつかえないな こないだってもう3年前だぞ
C++が仕事で使えるんだから使えるだろ
てか、Swiftなんてもう4でそろそろ5になるとか言ってるんだぞ
あれが仕事で使えるんだからRustなんか楽勝だろ 実際仕事で使っている人たちがいるのに使えないということは、別のところに問題があるのよ 安定性以前にまともにfibが書けない言語だから仕事じゃ使えない 車輪の再発明を抑止し過ぎるとnode.jsみたいになるからね
やり過ぎはだめってことよな たかだか一行二行のプログラムのnpmパッケージであふれ、しかも子孫含めた被参照ダウンロードが100万とかざらで、さらにそれがバグっている。 Rust関係ないけど最近ArchLinuxのAURに細工されたパッケージが上げられててほんのちょっとだけ話題になったんだけど
正直自分が使うcrateやそれの依存関係まで含めて全部書いてる人が信用できるかとかソースまでチェックしてる人なんていないよね…?
イカンなぁと思いながら盲目的に使っちゃってるわ(´・ω・`) CPUのL2キャッシュを作った人の叔母の恋人がテロリストがどうか気にするところから始めたほうがいいな 某ファイルシステムの作者が奥さんを殺してしまってな そういえばRUSTという殺し合いをするゲームがありますね crate以前に詐欺企業Mozillaが信用できないから Mozillaが詐欺企業なら、Mozilla以上に言う事やる事がコロコロ変わるAppleや
個人情報を収集しまくりのGoogleやMicrosoftはどうなってしまうんだろうなw crates.ioを見に行かないようにして、社内で確認済みのcrateしか置いてない社内リポジトリだけ
参照するような設定って出来るんだっけ? >>909
cargoはそこらへん腐ってるから無理。
出来はするけどcrates.ioをクローンするツールの開発が
殆ど動いてないしクローンしてもそのローカルリポジトリを管理するツールがない。
ここらへんはoffline modeも絡んでくるけど、
どうせ欠陥機能作って廃止してまた作っての繰り返しでめちゃくちゃになるだけ。 crates.ioのソースを持ってきてローカルに立ち上げてhostsで向ければ出来上がりじゃん cargoが便利コマンドすぎて、原始的な事がやりづらくなってる問題 便利っつーかモジュラリティーの低い構造になってるだけだろ。。
バカ設計だわ。 >>908
go使うよ。32bitsマシン以上向けならgoで十分だ。 仕事じゃ使えないのは言語じゃなくてお前だって言われてるのに何故goが出てくる Rustの提案するエセソリューションは機械語のレベルと相性が悪い
CやC++のほうがまだまともなアプローチしてる 「機械語のレベルと相性が悪い」が "All your base are belong to us" みたいに見えてきた
なんかもう根本的に解ってないなっていう感じからくる面白さがある モジラに職を奪われたおじさんと
そのおじさんの物まねをするおじさん達のスレ Cやアセンブラなどの低レベルな処理と連動する場合unsafeを使わざるを得ないが、言語の仕様上普通に書くとunsafe祭りになってしまい
ソースコードの可読性が低下するのが残念。抽象化したくてもこれまた仕様的に完全な抽象化が出来なかったりするし gcが有って良いならgo。 ない方が良いならnimってことか まだ学習し始めたばかりでみんなが何を言っているのかよくわからない。 どいつもこいつも適当なことをそれっぽく言ってるだけだから気にしなくておk >>926
一体いつからNimにはGCがなくなったんだ…?(困惑) >>930
狂人の真似をすれば実際狂人
つまりみんな本物のRustに職を奪われたおじさんなんだよ バトー「つまり、本物の "Rustによる被害者" というのは最初の一人だけで、
残りは全て模倣犯による狂言だったってのか?」
トグサ「ああ。狂言を読んだ者は初めのうちは怒りを覚える。
だが、その理不尽な怒りを抱えきれなくなると、
衝動的に自らが "Rustによる被害者" になりすますことで、
狂言によって植え付けられた怒りを共有しようとしていたんじゃないか」
バトー「実在しない "Rustによる被害者" たちが連鎖するってわけか……。
── 最初の一人はとうの昔に死んじまってるのにな」 >>922
懐かしいなAYBか。文法エラーを直しても通じないのがいいよなw
"All of your bases belong to us."
"お前らの卑しいものすべては我々に首ったけ"
ヒドイw rustに職を奪われたおじさんなんて実際は存在しないわけだが。。
まあそういう人がいると思った方が幸せな人がいるのは事実。 Rustに職を奪われたおじさんなんて名称なんてどうでもよくて
fibも書けない確かな"存在"がぐちぐち居座るせいで幸せになれない 良かった。Rustに職を奪われたおじさんは居ないんだ。 NLLがstabilizeされたらfibを書けないおじさんもfib書けるようになって成仏できるよ >>940
「fibを書けないアホ」が「木構造を書けないアホ」に変わるだけと予想 rustでfibが書けたり、木構造が書けることをここまで自慢してくる輩って。。 自慢も何もプログラマを名乗るなら最低限それくらい書けて当然だろ?ってこと
例えば、「俺は数学者だ」とか言ってる奴が微積分すら理解出来てなくて
「でも、因数分解ならできるし」とか言ってたら全力でぶっ叩くだろ?
つまりは程度の問題ってわけ
そして俺はRustでfibや木構造すら書けない奴はどうせ他の言語使ったって
ろくなコード書いてないだろうからそんな奴がプログラマを名乗るなんて片腹痛いわ!と思ってるだけ このスレに迷い込んだ新規にはfibをどんな書き方をしたらrustで問題になるのか想像もつかない >56でしょ?
fibがかけなくて5時間も喚いた挙げ句
答えを大量に示されても礼のひとつも言えない
下らない批評をしては論破されて潜伏を繰り返しているあほ
「rustに職を奪われた」「fibを書けない」もこいつの本質ではないんだよな >>56もそもそも拾い物みたいだしなぁ…… (検索に引っ掛かる ツイッターでrust-lang-ja.orgのドメインが〜みたいな話が先月からあるみたいだけど
このスレでは誰も話題にしてない? fib拾いものなのか
正しくないfibすら書けないおじさんだったか レス数が950を超えています。1000を超えると書き込みができなくなります。