profile
viewpoint

dalance/amber 195

A code search / replace tool

dalance/D2dControl 44

WPF Control for Direct2D with SharpDX

dalance/gip 17

a command-line tool to get global IP address

dalance/cargo-trend 11

Cargo subcommand to generate trend graph of dependent crates

dalance/fts-rs 8

A Rust library for high performance directory walking using libc fts.

dalance/flexlint 5

A flexible linter with rules defined by regular expression

dalance/bitpattern 1

bitwise pattern matching and extracting

dalance/awesome-rust 0

A curated list of Rust code and resources.

issue commentdalance/svls

Slang Usage

Thank you for your interesting in this project. I think slang integration is difficult because it is C++ library and the interoperation between C++ and Rust is difficult.

albertschulz

comment created time in 3 days

issue commentdalance/svls

Parse error with import

Thank you for your report. Could you provide the version information of svls and svlint and the sample source code to reproduce it?

eunchan

comment created time in 3 days

startedt-hishinuma/DD-AVX_v3

started time in 13 days

PR opened forcia/rustbook

Fix typo
+3 -3

0 comment

2 changed files

pr created time in 13 days

create barnchdalance/rustbook

branch : fix_typo

created branch time in 13 days

push eventdalance/rustbook

dalance

commit sha 4d8dcaafa8241feee5f2b399840187928138ee33

Add cron setting

view details

Kentaro Matsumoto

commit sha caa5f354adf7cb65c6cf4224616aa32e69507638

Merge pull request #1 from dalance/cron Add cron setting

view details

Satoshi Yoshikawa

commit sha e1cf24eeee29b752392e693bdb07356e635895a4

clapnおバージョンを 3.0.0-beta.2 に追従させるようにした

view details

Satoshi Yoshikawa

commit sha 0e687982a9ef9d445dd52a97b980fb59a49ada62

バージョン指定に`=`を追加

view details

dalance

commit sha 6a5919f3d4654ca19512cffd82c6b9d484bc2da0

Remove Cargo.lock at CI

view details

Kentaro Matsumoto

commit sha c486f6fe83f9404520c09e6f1a45e080c443da03

Merge pull request #3 from emergent/upgrade-clap-beta2 clapのバージョンを 3.0.0-beta.2 に追従させるようにした

view details

Kentaro Matsumoto

commit sha b631be53c5bab2a0949f7a851cc25bf2b03f32b0

Merge pull request #4 from dalance/remove_lock_at_ci Remove Cargo.lock at CI

view details

push time in 13 days

created tagdalance/softfloat-wrapper

tagv0.1.3

a safe wrapper of Berkeley SoftFloat based on softfloat-sys

created time in 18 days

push eventdalance/softfloat-wrapper

dalance

commit sha 3021766314342bf2b75c5003e7d534826ae03643

Prepare to v0.1.3

view details

dalance

commit sha 99d169268d0c8dc7f369b4350df74d2acef012bb

Start next development iteration v0.1.3

view details

push time in 18 days

push eventdalance/softfloat-wrapper

dalance

commit sha 97d70dff50d67d092e216d28d8edf454c4b96987

Add features for arm/riscv

view details

push time in 18 days

PR opened forcia/rustbook

Remove Cargo.lock at CI

CI時にCargo.lockを削除することで、クレートのパッチバージョンアップによるビルド失敗を検知します。

+3 -0

0 comment

1 changed file

pr created time in 22 days

create barnchdalance/rustbook

branch : remove_lock_at_ci

created branch time in 22 days

Pull request review commentforcia/rustbook

clapのバージョンを 3.0.0-beta.2 に追従させるようにした

 [package] name = "samplecli-builder"-version = "0.1.0"+version = "0.1.1" authors = ["PACKAGE AUTHOR <package_author@example.com>"] edition = "2018"  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html  [dependencies]-clap = "3.0.0-beta.1"+clap = "3.0.0-beta.2"

ありがとうございます。問題ないと思います。

emergent

comment created time in 22 days

PullRequestReviewEvent

push eventdalance/softfloat-wrapper

dalance

commit sha c812a298444da0ca760a422cb490660c3655f654

Remove unused use

view details

push time in 22 days

created tagdalance/softfloat-wrapper

tagv0.1.2

a safe wrapper of Berkeley SoftFloat based on softfloat-sys

created time in 22 days

push eventdalance/softfloat-wrapper

dalance

commit sha 3cdf0d8a17607575b3383da56b3bd226dfaf6a8b

Prepare to v0.1.2

view details

dalance

commit sha 5b02e9c10cff93abf9d5547e41a7aa2ef06069fe

Start next development iteration v0.1.2

view details

push time in 22 days

push eventdalance/softfloat-wrapper

dalance

commit sha 44cc6c4bd1e995b51f81264f5662cf37dbda4290

Impl compare in trait

view details

push time in 22 days

push eventdalance/softfloat-wrapper

msyksphinz

commit sha 1e0532aaef884d3b97429239b6aacfb48eac68e9

Implement compare functions for each operations

view details

msyksphinz

commit sha 8d2ae1f9494d70c49c9825deafd751dfcd1b1b6d

Fix softfloat_sys_riscv into softfloat_sys

view details

dalance

commit sha 49fde4dac78b12f0a9e6759a1201d85160e49e86

Merge pull request #1 from msyksphinz-self/compare_functions Implement compare functions for each operations

view details

push time in 22 days

PR merged dalance/softfloat-wrapper

Implement compare functions for each operations

This PR is to recognize the difference of flag operations in each compare functions.

Currently, compare execute two softfloat functions fxx_eq and fxx_lt but flag raising conditions are different so correct flag can't be set

    fn compare<T: Borrow<Self>>(&self, x: T) -> Option<Ordering> {
        let eq = unsafe { softfloat_sys::f64_eq(self.0, x.borrow().0) };
        let lt = unsafe { softfloat_sys::f64_lt(self.0, x.borrow().0) };
  • f64_eq.c
    if ( isNaNF64UI( uiA ) || isNaNF64UI( uiB ) ) {
        if (
            softfloat_isSigNaNF64UI( uiA ) || softfloat_isSigNaNF64UI( uiB )
        ) {
            softfloat_raiseFlags( softfloat_flag_invalid );
        }
        return false;
  • f64_lt.c
    if ( isNaNF64UI( uiA ) || isNaNF64UI( uiB ) ) {
        softfloat_raiseFlags( softfloat_flag_invalid );
        return false;
    }

So this PR is defining explicit compare operation functions, to get correct flag result. eq(), lt(), le(), lt_quiet(), le_quiet() execute softfloat function only one time, so it can keep correct flag information.

+90 -0

1 comment

5 changed files

msyksphinz-self

pr closed time in 22 days

pull request commentdalance/softfloat-wrapper

Implement compare functions for each operations

LGTM. Thanks!

msyksphinz-self

comment created time in 22 days

Pull request review commentforcia/rustbook

clapのバージョンを 3.0.0-beta.2 に追従させるようにした

 [package] name = "samplecli-builder"-version = "0.1.0"+version = "0.1.1" authors = ["PACKAGE AUTHOR <package_author@example.com>"] edition = "2018"  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html  [dependencies]-clap = "3.0.0-beta.1"+clap = "3.0.0-beta.2"

これだとbeta.3が出たときにまた壊れてしまう可能性があるので以下のようにしておくのがいいかもしれません。

clap = "=3.0.0-beta.2"
emergent

comment created time in a month

PullRequestReviewEvent

issue closeddalance/procs

Do we need the note about config file is not found?

After running procs I get the following note. Do we need this?

note: configuration file (/Users/shinokada/Library/Preferences/com.github.dalance.procs/config.toml) is not found
      please see https://github.com/dalance/procs#configuration
procs --version
procs 0.10.1

closed time in a month

shinokada

created tagdalance/procs

tagv0.10.5

A modern replacement for ps written in Rust

created time in a month

push eventdalance/procs

dalance

commit sha 0c55f711ba09d5da30749ca562cbef2575cd065c

Prepare to v0.10.5

view details

dalance

commit sha 063ffd5d438e1bd1c1dcd3e7d18dcf8628aaa3fe

Start next development iteration v0.10.5

view details

push time in a month

push eventdalance/procs

dalance

commit sha 65c6bbf6d52cd6b47f2db05b23d73159fd7ffdd0

Update CHANGELOG

view details

push time in a month

push eventdalance/procs

dalance

commit sha e120f48ae5577e3a07e507cab76b188bd1681fe7

Move configuration note to help message #57

view details

dalance

commit sha c3a1d0e4c2012d9260d6326563c2fa47a29b7426

Merge branch 'master' of https://github.com/dalance/procs into master

view details

push time in a month

IssuesEvent

issue commentdalance/procs

Do we need the note about config file is not found?

Thank you for your suggestion. I will remove the notification message and add help message instead like below. What do you think?

$ procs -h

procs 0.10.5-pre
A modern replacement for ps

please see https://github.com/dalance/procs#configuration to configure columns

USAGE:
    procs [FLAGS] [OPTIONS] [--] [KEYWORD]...

FLAGS:
    -a, --and        AND  logic for multi-keyword
    -o, --or         OR   logic for multi-keyword
    -d, --nand       NAND logic for multi-keyword
    -r, --nor        NOR  logic for multi-keyword
    -l, --list       Show list of kind
    -t, --tree       Tree view
    -w, --watch      Watch mode with default interval (1s)
        --config     Generate configuration sample file
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -W, --watch-interval <second>    Watch mode with custom interval
    -i, --insert <kind>...           Insert column to slot
        --sorta <kind>               Sort column by ascending
        --sortd <kind>               Sort column by descending
    -c, --color <color>              Color mode [possible values: auto, always, disable]
    -p, --pager <pager>              Pager mode [possible values: auto, always, disable]
        --interval <millisec>        Interval to calculate throughput [default: 100]

ARGS:
    <KEYWORD>...    Keywords for search
shinokada

comment created time in a month

issue openeddalance/procs

Add `LESSCHARSET=utf-8` by default

To resolve display problem on some environments like #74, #21.

https://gitlab.com/imp/pager-rs/-/merge_requests/5

created time in a month

issue commentdalance/procs

Display problem when using via snap on Ubuntu 20.02

Thanks. I will try to fix it by calling less with LESSCHARSET internally.

arthurlogilab

comment created time in a month

issue commentdalance/procs

snaps install on ubuntu 20.02 : ld.so object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded

I tried to reproduce it on Ubuntu 20.04 clean image, but it couldn't be reproduced. The following site may be helpful.

https://stackoverflow.com/questions/53825857/error-ld-so-object-libgtk3-nocsd-so-0-from-ld-preload-cannot-be-preloaded

arthurlogilab

comment created time in a month

issue commentdalance/procs

Display problem when using via snap on Ubuntu 20.02

Could you try the following config?

https://github.com/dalance/procs#less-setting

arthurlogilab

comment created time in a month

push eventrust-lang-ja/rust-by-example-ja

Takahiro Itazuri

commit sha 99fd248553eb020fc9ad76bf804b2bf2e57b5549

translate some untranslated parts

view details

dalance

commit sha 92c6b841bcb48d1674422d1756c520f0aff7dbcf

Merge pull request #73 from takahiro-itazuri/master translate some untranslated parts

view details

push time in a month

PR merged rust-lang-ja/rust-by-example-ja

translate some untranslated parts

一部の未翻訳部分を翻訳しました。

+3 -3

1 comment

1 changed file

takahiro-itazuri

pr closed time in a month

pull request commentrust-lang-ja/rust-by-example-ja

translate some untranslated parts

ありがとうございます! いいと思いますのでマージします。

takahiro-itazuri

comment created time in a month

push eventdalance/procs

Fabio Valentini

commit sha 63834b007c17b0bcaf05e46ab1175d2a8ac8e68b

chore: update which from 3 to 4

view details

dalance

commit sha 93a0a86df6d2854389b02afe2c6e19767cb10831

Merge pull request #72 from decathorpe/master chore: update which from 3 to 4

view details

push time in a month

PR merged dalance/procs

chore: update which from 3 to 4

Bumping the dependendy from which 3 to 4 doesn't requrie code changes. which moved from failure to thiserror, which explains the new entries for the thiserror crates in Cargo.lock. Running tests was successful locally on my system (fedora 32).

+25 -5

1 comment

2 changed files

decathorpe

pr closed time in a month

pull request commentdalance/procs

chore: update which from 3 to 4

LGTM. Thanks!

decathorpe

comment created time in a month

push eventdalance/nom-packrat

Jan Riemer

commit sha 2b25453f4b4e42044e5ef2d9b55be47b2fff73b8

docs: add link to Wikipedia for packrat parsing

view details

dalance

commit sha 1e791401a86ee36ef12b124f2effe586e4d870a6

Merge pull request #3 from janriemer/patch-1 docs: add link to Wikipedia for packrat parsing

view details

push time in a month

PR merged dalance/nom-packrat

docs: add link to Wikipedia for packrat parsing

Not everyone knows what "packrat parsing" is, so I added a link to Wikipedia about it. :wink:

Thank you for this library! :heart: I will probably use it in my transpiler, once I switched to nom 5.x (currently 4.x).

+1 -1

1 comment

1 changed file

janriemer

pr closed time in a month

pull request commentdalance/nom-packrat

docs: add link to Wikipedia for packrat parsing

LGTM. Thanks!

janriemer

comment created time in a month

push eventdalance/svls

otreblan

commit sha ed0437fa3872c4b89ac274760c2fdfaa9da1973e

Add AUR badge

view details

dalance

commit sha 006d2dc9cb2519c095539f4a3bef75b2683235d5

Merge pull request #6 from otreblan/master Add AUR badge

view details

push time in a month

PR merged dalance/svls

Add AUR badge

AUR version

+1 -0

1 comment

1 changed file

otreblan

pr closed time in a month

pull request commentdalance/svls

Add AUR badge

LGTM. Thanks!

otreblan

comment created time in a month

issue closeddalance/sv-parser

Preprocessor issue with empty ifdef

Using "parse_sv -p" to parse the following code:

module A;
`ifdef OPT_1
  //wire a = 1'b1;
`else
  wire a = 1'b0;
`endif
`ifdef DEBUG
  `ifdef OPT_2
  //wire b = 1'b1;
  `else
  wire b = 1'b0;
  `endif
`endif
endmodule

results in the following output:

module A;
wire a = 1'b0;
wire b = 1'b0;
  endmodule

The line wire b = 1'b0; should not be there as DEBUG is not defined.

Please note: To see the issue we need both lines in OPT_1 and OPT_2 to be commented out as seen in the code above. When enabling the commented out lines, everything works as expected.

closed time in 2 months

Raffi

PR opened forcia/rustbook

Add cron setting
+2 -0

0 comment

1 changed file

pr created time in 2 months

create barnchdalance/rustbook

branch : cron

created branch time in 2 months

push eventdalance/sv-parser

github-action-benchmark

commit sha 496f1eef0231df82fcdfd447523c55d807ad349e

add Rust Benchmark (cargo) benchmark result for 727cd3f0677891afba3817d0b631ab545bd1c1ed

view details

push time in 2 months

push eventdalance/sv-parser

github-action-benchmark

commit sha 5e8b4f72758842bacaf42d90fb30a07514bee7c9

add Rust Benchmark (cargo) benchmark result for 9c935af3974f772d90260ef55320fce269720689

view details

push time in 2 months

issue commentdalance/sv-parser

Preprocessor issue with empty ifdef

Thank you for your information, and sorry for the late reply. I fixed this issue.

Raffi

comment created time in 2 months

issue commentdalance/sv-parser

`define with inline comment

Thank you for your information, and sorry for the late reply. I fixed this issue.

tux3

comment created time in 2 months

created tagdalance/sv-parser

tagv0.8.2

SystemVerilog parser library fully complient with IEEE 1800-2017

created time in 2 months

push eventdalance/sv-parser

dalance

commit sha 727cd3f0677891afba3817d0b631ab545bd1c1ed

Prepare to release

view details

push time in 2 months

push eventdalance/sv-parser

dalance

commit sha 9c935af3974f772d90260ef55320fce269720689

Fix empty ifdef issue #10

view details

push time in 2 months

push eventdalance/sv-parser

github-action-benchmark

commit sha b4cbfd90c790e4c74c0819bb0e2342a74d84ed7e

add Rust Benchmark (cargo) benchmark result for 9727db03eb54d48a01d7c32fe65e54f1c2be1a8b

view details

push time in 2 months

push eventdalance/sv-parser

github-action-benchmark

commit sha 57ff166b910d84200f8bb939b817ea8ead1bcaf0

add Rust Benchmark (cargo) benchmark result for b678874f4d7b45bcdd5e27d282c4a9c203565ffe

view details

push time in 2 months

created tagdalance/sv-parser

tagv0.8.1

SystemVerilog parser library fully complient with IEEE 1800-2017

created time in 2 months

push eventdalance/sv-parser

dalance

commit sha 9727db03eb54d48a01d7c32fe65e54f1c2be1a8b

Prepare to release

view details

push time in 2 months

push eventdalance/sv-parser

dalance

commit sha b678874f4d7b45bcdd5e27d282c4a9c203565ffe

Fix text macro with single line comment #12

view details

push time in 2 months

push eventdalance/sv-parser

github-action-benchmark

commit sha 37fef866c435e209fb35c948e22765e8f831b673

add Rust Benchmark (cargo) benchmark result for 30c34fa7eed9a1edeb08a296aafdcdded6afd6ae

view details

push time in 2 months

push eventdalance/sv-parser

github-action-benchmark

commit sha 229ebd36984687a4fbe0f1e805c2c6cdc8dc80b6

add Rust Benchmark (cargo) benchmark result for 3dad1beef3400156c84381d082b5845fd9c096d0

view details

push time in 2 months

issue commentdalance/sv-parser

"Declaraton" typo

Thanks! I fixed it.

vivekmalneedi

comment created time in 2 months

created tagdalance/sv-parser

tagv0.8.0

SystemVerilog parser library fully complient with IEEE 1800-2017

created time in 2 months

push eventdalance/sv-parser

dalance

commit sha 30c34fa7eed9a1edeb08a296aafdcdded6afd6ae

Prepare to release

view details

push time in 2 months

push eventdalance/sv-parser

dalance

commit sha 81a981a37e102efc80805aa3fe0de8f69e362182

Update nom-tracable

view details

dalance

commit sha 5514a7014193a2823ab568a31c5a7551450f652b

Fix typo #18

view details

dalance

commit sha 3dad1beef3400156c84381d082b5845fd9c096d0

Merge branch 'master' of https://github.com/dalance/sv-parser into master

view details

push time in 2 months

push eventrust-lang-ja/rust-by-example-ja

Khdbble

commit sha 381745f3c8647c149a2e491b8accbb2696ca4d3c

translate panic * translate error/panic.md

view details

Khdbble

commit sha ee282827d7979e4c252dc6f1d1c225f10fafb829

translate option_unwrap.md * translate error/option_unwrap.md

view details

Khdbble

commit sha 0675266744fc4e4f19fedf69323c26da5f87b4d0

translate question_mark.md * translate error/option_unwrap/question_mark.md

view details

Khdbble

commit sha d1a8ac7a6c15765a29a85e156d46d8f313e3335c

fixed the title of question_mark.md

view details

Khdbble

commit sha 6956a527301482443c07bedbba25fdca60e5a956

translate result.md * translate error/result.md

view details

Khdbble

commit sha c85d85c68936bcaabfd47dd9f466246ac78d8ec3

translate result_map.md * translate error/result/result_map.md

view details

Khdbble

commit sha a986309ff9886496af4250be93be529df6dc3f2a

translate result_alias.md * translate error/result/reslt_alias.md

view details

Khdbble

commit sha 4e8fa81ceb9c1b5d53bdf24ff3f410cb721f3e1d

translate early_returns.md * translate error/result/early_returns.md

view details

Khdbble

commit sha d27f65b5fb03e7c2e816019ccb476eda5bedfc78

translate enter_question_mark.md * error/result/enter_question_mark.md

view details

Khdbble

commit sha 82de7c4de7e40e1f5996a46c8eae29788fcb9ca3

translate multiple_error_types.md * error/multiple_error_types.md

view details

Khdbble

commit sha 04069b8e48f1d702be862fdb5667be21afc30602

translate option_result.md * error/multiple_error_types/option_result.md

view details

Khdbble

commit sha b718477a94d63ab310809e8374c59c34698ed1ee

translate define_error_type.md * error/multiple_error_types/define_error_type.md

view details

Khdbble

commit sha 906ac69a5f83e222811497c28bfa2741114a7529

translate boxing_errors.md * error/multiple_error_types/boxing_errors.md

view details

Khdbble

commit sha 2a2ea9641b120b0e8c631d1229ecb593b923fd7e

translate reenter_question_mark.md * error/multiple_error_types/reenter_question_mark.md

view details

Khdbble

commit sha e3c45df15722b4b1536887f8cb58953b17d9200e

translate wrap_error.md * error/multiple_error_types/wrap_error.md

view details

Khdbble

commit sha 0b84e33dee7c13439ad59628225e32ab04fc4595

translate iter_result.md * error/iter_result.md

view details

Khdbble

commit sha c71d7f389d12001a70c056bbdd56d859e68fb935

translate error.md * error.md

view details

Khdbble

commit sha 2b8a23cfec400e082a214bdbc5ba1d7001aa2357

fixed titles in each page & SUMMARY.md

view details

Khdbble

commit sha c0ed468141c675e123e82e001aceba4bcaab273c

restored deleted contents from the original

view details

Khdbble

commit sha 20acadd853a186200403c2df28b31b736c3dcfb5

fixed reviewed contents PR at https://github.com/rust-lang-ja/rust-by-example-ja/pull/69

view details

push time in 2 months

pull request commentrust-lang-ja/rust-by-example-ja

translate error_handling

ご対応ありがとうございます。問題ないと思いますのでマージします。 お疲れ様でした!

Khdbble

comment created time in 2 months

created tagdalance/mdbook-transcheck

tagv0.2.5

Checker for translated mdbook

created time in 2 months

push eventdalance/mdbook-transcheck

dalance

commit sha f876159d688fc92f7b42865ae4e2123e70b41307

Prepare to v0.2.5

view details

dalance

commit sha df15e2bdd8b367cbf90ebf846705ee2407454d71

Start next development iteration v0.2.5

view details

push time in 2 months

push eventdalance/mdbook-transcheck

dalance

commit sha 75b5bd047784862886b21d31c00527763fc3544b

Fix code block detection

view details

dalance

commit sha ac34b47308a9c95c4b065e15689cb85fa9d085cf

Add single option

view details

push time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn print(result: Result<i32, ParseIntError>) {  fn main() {     // This still presents a reasonable answer.+    // ここは以前と変わらず、妥当な解を与えます。     let twenty = multiply("10", "2");     print(twenty);      // The following now provides a much more helpful error message.+    // こちらは今度は有益なエラーメッセージを与えます。     let tt = multiply("t", "2");     print(tt); } ``` +<!-- Luckily, `Option`'s `map`, `and_then`, and many other combinators are also implemented for `Result`. [`Result`][result] contains a complete listing.+-->+幸運にも、`Option`の`map`、`and_then`、その他多くのコンビネータも`Result`のために実装されています。[`Result`][result]に全てのリストが記載されています。  ```rust,editable use std::num::ParseIntError;  // As with `Option`, we can use combinators such as `map()`. // This function is otherwise identical to the one above and reads: // Modify n if the value is valid, otherwise pass on the error.+// `Option`と同様、`map()`などのコンビネータを使うことができます。+// そうでなければこの関数は上記のものと等しくなり、+// 値が有効ならnを変更し、向こうであればエラーをそのまま見送ります。
// 値が有効ならnを変更し、無効であればエラーをそのまま返します。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() -> Result<(), ParseIntError> { [result]: https://doc.rust-lang.org/std/result/enum.Result.html [parse]: https://doc.rust-lang.org/std/primitive.str.html#method.parse [`Debug`]: https://doc.rust-lang.org/std/fmt/trait.Debug.html-[the following section]: result/early_returns.md

原文のコメントアウトをお願いします。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() { ```  -[^†]: See [re-enter ?][re_enter_?] for more details.

原文のコメントアウトをお願いします。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn print(result: Result<i32, ParseIntError>) {  fn main() {     // This still presents a reasonable answer.+    // ここは以前と変わらず、妥当な解を与えます。     let twenty = multiply("10", "2");     print(twenty);      // The following now provides a much more helpful error message.+    // こちらは今度は有益なエラーメッセージを与えます。     let tt = multiply("t", "2");     print(tt); } ``` +<!-- Luckily, `Option`'s `map`, `and_then`, and many other combinators are also implemented for `Result`. [`Result`][result] contains a complete listing.+-->+幸運にも、`Option`の`map`、`and_then`、その他多くのコンビネータも`Result`のために実装されています。[`Result`][result]に全てのリストが記載されています。  ```rust,editable use std::num::ParseIntError;  // As with `Option`, we can use combinators such as `map()`. // This function is otherwise identical to the one above and reads: // Modify n if the value is valid, otherwise pass on the error.+// `Option`と同様、`map()`などのコンビネータを使うことができます。+// そうでなければこの関数は上記のものと等しくなり、

otherwise identicalは「その他の点(つまりmapを使っている以外の点)では上記の関数と同じ」ですね。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 That is, `Result<T, E>` could have one of two outcomes: * `Ok<T>`: 要素`T`が見つかった場合 * `Err<E>`: 要素`E`とともにエラーが見つかった場合 +<!-- By convention, the expected outcome is `Ok` while the unexpected outcome is `Err`.+-->+慣例により、`Ok`が期待される結果であり、`Err`は期待されない結果です。 +<!-- Like `Option`, `Result` has many methods associated with it. `unwrap()`, for example, either yields the element `T` or `panic`s. For case handling, there are many combinators between `Result` and `Option` that overlap.+-->+`Option`と同様、`Result`は多くのメソッドを持ちます。例えば`unwrap()`は、`T`もしくは`panic`を受け渡します。エラーハンドリングでは、`Result`と`Option`で重複するコンビネータが多くあります。 +<!-- In working with Rust, you will likely encounter methods that return the `Result` type, such as the [`parse()`][parse] method. It might not always be possible to parse a string into the other type, so `parse()` returns a `Result` indicating possible failure.+-->+Rustを書いていく中で、[`parse()`][parse]メソッドなど、`Result`型を返すメソッドを目にするでしょう。文字列を他の型にパースすることは必ずしも成功する訳ではないため、`Result`を返すことで失敗するケースについてもカバーできるのです。 +<!-- Let's see what happens when we successfully and unsuccessfully `parse()` a string:+-->+早速、`parse()`による文字列の成功例と失敗例を共に見てみましょう。  ```rust,editable,ignore,mdbook-runnable fn multiply(first_number_str: &str, second_number_str: &str) -> i32 {     // Let's try using `unwrap()` to get the number out. Will it bite us?+    // `unwrap()`で数字を取り出しましてみましょう。痛い目を見るでしょうか?
    // `unwrap()`で数字を取り出してみましょう。痛い目を見るでしょうか?
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # Early returns+-->+# 早期リターン +<!-- In the previous example, we explicitly handled the errors using combinators. Another way to deal with this case analysis is to use a combination of `match` statements and *early returns*.+-->+前の例では、コンビネータの活用によりエラーを明示的に処理しました。場合分けに対する別の対処法として、`match`文のコンビネータと早期リターンを使うこともできます。

後半の「コンビネータ」は「match文と早期リターンの組み合わせ」だと思います。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() { } ``` +<!-- In the unsuccessful case, `parse()` leaves us with an error for `unwrap()` to `panic` on. Additionally, the `panic` exits our program and provides an unpleasant error message.+-->+失敗例では、`parse()`は`unwrap()`がパニックするためのエラーを残します。そして、`panic`はプログラムを終了させて不快なエラーメッセージを出力します。

parse()がエラーを返すためunwrap()がパニックします。」という感じではどうでしょうか?

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # `map` for `Result`+-->+# `Result`の`map` +<!-- Panicking in the previous example's `multiply` does not make for robust code. Generally, we want to return the error to the caller so it can decide what is the right way to respond to errors.+-->+前の例で見た`multiply`でのパニックは、コードを強固にするためには書きません。一般に、呼び出した側がエラーをどのように対処するべきかを自由に決められるように、エラーを呼び出した場所に返すのが好ましいです。 +<!-- We first need to know what kind of error type we are dealing with. To determine the `Err` type, we look to [`parse()`][parse], which is implemented with the [`FromStr`][from_str] trait for [`i32`][i32]. As a result, the `Err` type is specified as [`ParseIntError`][parse_int_error].+-->+まずは、どのようなエラー型を扱っているのかを知る必要があります。`Err`型を定めるために、[`i32`][i32]に対し[`FromStr`][from_str]トレートを使って実装された[`parse()`][parse]を見ます。結果、`Err`型は[`ParseIntError`][parse_int_error]というものであることが分かります。

「見ます」は「見てみましょう」という感じの方が次の文とのつながりがいいかと思います。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() { } ``` +<!-- In the unsuccessful case, `parse()` leaves us with an error for `unwrap()` to `panic` on. Additionally, the `panic` exits our program and provides an unpleasant error message.+-->+失敗例では、`parse()`は`unwrap()`がパニックするためのエラーを残します。そして、`panic`はプログラムを終了させて不快なエラーメッセージを出力します。 +<!-- To improve the quality of our error message, we should be more specific about the return type and consider explicitly handling the error.+-->+エラーメッセージを改善するために、リターン型に対してもっと明確になるべきで、またエラーを明示的に処理することを考えるべきです。 +<!-- ## Using `Result` in `main`+-->+## `main`内で使う`Result` +<!-- The `Result` type can also be the return type of the `main` function if specified explicitly. Typically the `main` function will be of the form:+-->+`Result`型は、明示的な指定により`main`関数のリターン型にもなります。一般に、`main`関数は以下のような形になるでしょう。  ```rust fn main() {     println!("Hello World!"); } ``` +<!-- However `main` is also able to have a return type of `Result`. If an error occurs within the `main` function it will return an error code and print a debug representation of the error (using the [`Debug`] trait). The following example shows such a scenario and touches on aspects covered in [the following section].+-->+一方`main`で`Result`をリターン型とする場合、エラーが`main`関数内で発生した時、エラーコードを返し、エラーに関するデバッグ表記を([`Debug`]トレートを使って)出力します。以下の例ではそのようなシナリオを示し、[この先の節]でカバーする内容に触れていきます。

一文目が長い気がするので、原文と同じように切ってもいいと思います。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # aliases for `Result`+-->+# `Result`に対するエイリアス +<!-- How about when we want to reuse a specific `Result` type many times? Recall that Rust allows us to create [aliases][typealias]. Conveniently, we can define one for the specific `Result` in question.+-->+特定の`Result`型を何度も使いたくなるのはどんな時でしょう?Rustは[エイリアス][typealias]の作成をサポートしていたことを思い出してください。便利なことに、議題である特定の`Result`型に対しても定義することができます。

「議題である」はちょっと分かりにくい気がします。なくてもいいのではないでしょうか。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 That is, `Result<T, E>` could have one of two outcomes: * `Ok<T>`: 要素`T`が見つかった場合 * `Err<E>`: 要素`E`とともにエラーが見つかった場合 +<!-- By convention, the expected outcome is `Ok` while the unexpected outcome is `Err`.+-->+慣例により、`Ok`が期待される結果であり、`Err`は期待されない結果です。 +<!-- Like `Option`, `Result` has many methods associated with it. `unwrap()`, for example, either yields the element `T` or `panic`s. For case handling, there are many combinators between `Result` and `Option` that overlap.+-->+`Option`と同様、`Result`は多くのメソッドを持ちます。例えば`unwrap()`は、`T`もしくは`panic`を受け渡します。エラーハンドリングでは、`Result`と`Option`で重複するコンビネータが多くあります。

このyieldは「もたらす」「生じさせる」あたりでしょうか。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # Unpacking options with `?`+-->+# `?`による`Option`のアンパック +<!-- You can unpack `Option`s by using `match` statements, but it's often easier to use the `?` operator. If `x` is an `Option`, then evaluating `x?` will return the underlying value if `x` is `Some`, otherwise it will terminate whatever function is being executed and return `None`.+-->+`Option`をアンパックするには`match`文を使うこともできますが、`?`を使う方が簡単になることが多いでしょう。`Option`の`x`があるとすると、`x?`を評価した値は、`x`が`Some`の場合は`x`の値となり、そうでなければ実行中の関数を終了させ、`None`を返します。+  ```rust,editable fn next_birthday(current_age: Option<u8>) -> Option<String> { 	// If `current_age` is `None`, this returns `None`. 	// If `current_age` is `Some`, the inner `u8` gets assigned to `next_age`+    // `current_age`が`None`の場合、`None`を返す。+    // `current_age`が`Some`の場合、内部の`u8`型の値が`next_age`に代入される。     let next_age: u8 = current_age?;     Some(format!("Next year I will be {}", next_age)) } ``` +<!-- You can chain many `?`s together to make your code much more readable.+-->+多くの`?`を共に使うことで、リーダブルなコードを描くことができます。
多くの`?`を共に使うことで、リーダブルなコードを書くことができます。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 impl error::Error for DoubleError { // Implement the conversion from `ParseIntError` to `DoubleError`. // This will be automatically called by `?` if a `ParseIntError` // needs to be converted into a `DoubleError`.+// `ParseIntError`から`DoubleError`への変換の実装。+// `ParseIntError`が`DoubleError`に変換される必要がある時、自動的に`?`に呼び出される。
// `ParseIntError`が`DoubleError`に変換される必要がある時、自動的に`?`から呼び出される。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 That is, `Result<T, E>` could have one of two outcomes: * `Ok<T>`: 要素`T`が見つかった場合 * `Err<E>`: 要素`E`とともにエラーが見つかった場合 +<!-- By convention, the expected outcome is `Ok` while the unexpected outcome is `Err`.+-->+慣例により、`Ok`が期待される結果であり、`Err`は期待されない結果です。 +<!-- Like `Option`, `Result` has many methods associated with it. `unwrap()`, for example, either yields the element `T` or `panic`s. For case handling, there are many combinators between `Result` and `Option` that overlap.+-->+`Option`と同様、`Result`は多くのメソッドを持ちます。例えば`unwrap()`は、`T`もしくは`panic`を受け渡します。エラーハンドリングでは、`Result`と`Option`で重複するコンビネータが多くあります。 +<!-- In working with Rust, you will likely encounter methods that return the `Result` type, such as the [`parse()`][parse] method. It might not always be possible to parse a string into the other type, so `parse()` returns a `Result` indicating possible failure.+-->+Rustを書いていく中で、[`parse()`][parse]メソッドなど、`Result`型を返すメソッドを目にするでしょう。文字列を他の型にパースすることは必ずしも成功する訳ではないため、`Result`を返すことで失敗するケースについてもカバーできるのです。 +<!-- Let's see what happens when we successfully and unsuccessfully `parse()` a string:+-->+早速、`parse()`による文字列の成功例と失敗例を共に見てみましょう。

「文字列をparse()した場合の成功例と失敗例」という感じではどうでしょうか?

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # `Option` & `unwrap`+-->+# `Option` と `unwrap` +<!-- In the last example, we showed that we can induce program failure at will.  We told our program to `panic` if the princess received an inappropriate  gift - a snake. But what if the princess expected a gift and didn't receive  one? That case would be just as bad, so it needs to be handled!+ -->+以前の例では、お姫様に不適切な贈り物(ヘビ)を渡した際に`panic`を呼び出すことによって、自由にプログラムの実行を失敗させることが分かりました。では、お姫様が贈り物を期待しているにもかかわらず、何も受け取らなかったらどうなるでしょう?ヘビを受け取るのに劣らない悲惨なケースになるので、エラーハンドリングする必要があります!
以前の例では、お姫様に不適切な贈り物(ヘビ)を渡した際に`panic`を呼び出すことによって、自由にプログラムの実行を失敗させられることが分かりました。では、お姫様が贈り物を期待しているにもかかわらず、何も受け取らなかったらどうなるでしょう?ヘビを受け取るのに劣らない悲惨なケースになるので、エラーハンドリングする必要があります!
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # Unpacking options with `?`+-->+# `?`による`Option`のアンパック +<!-- You can unpack `Option`s by using `match` statements, but it's often easier to use the `?` operator. If `x` is an `Option`, then evaluating `x?` will return the underlying value if `x` is `Some`, otherwise it will terminate whatever function is being executed and return `None`.+-->+`Option`をアンパックするには`match`文を使うこともできますが、`?`を使う方が簡単になることが多いでしょう。`Option`の`x`があるとすると、`x?`を評価した値は、`x`が`Some`の場合は`x`の値となり、そうでなければ実行中の関数を終了させ、`None`を返します。

xの値」だとxそのもの(つまりOption<T>)が返ってくるように見えるので underlyingのイメージを入れた方がいいと思います。「xに格納された値」という感じでしょうか。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 impl fmt::Display for DoubleError { impl error::Error for DoubleError {     fn source(&self) -> Option<&(dyn error::Error + 'static)> {         // Generic error, underlying cause isn't tracked.+        // 基本となるエラー、原因は記録されていない。         None     } }  fn double_first(vec: Vec<&str>) -> Result<i32> {     vec.first()         // Change the error to our new type.+        // エラーを新たな型に変換する。
        // エラーを新たな型に変更する。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 impl error::Error for EmptyVec {      fn cause(&self) -> Option<&error::Error> {         // Generic error, underlying cause isn't tracked.+        // 基本となるエラー、原因は記録されていない。         None     } }  // The same structure as before but rather than chain all `Results` // and `Options` along, we `?` to get the inner value out immediately.+// 前と同じ構造だが、`Results`と`Option`を繋げていくより、
// 前と同じ構造だが、`Results`と`Option`を繋げていく代わりに、
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() { } ``` +<!-- This is actually fairly clean now. Compared with the original `panic`, it is very similar to replacing the `unwrap` calls with `?` except that the return types are `Result`. As a result, they must be destructured at the top level.+-->+これでかなり綺麗になりました。元の`panic`と比べ、リターン型が`Result`であることを除けば、`unwrap`の呼び出しを`?`で置き換える点で非常に似ています。結果、最も上のレベルで分解されなければなりません。

最後の文の「最も」は不要かと思います。単に(1つ)上のレベルですね。 また、theyに相当する部分が日本語だと読み取り辛いので「そのResultは」くらいを補足してもいいかもしれません。

これでかなり綺麗になりました。元の`panic`と比べ、リターン型が`Result`であることを除けば、`unwrap`の呼び出しを`?`で置き換えたものに非常に似ています。結果、最も上のレベルで分解されなければなりません。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 enum DoubleError {     EmptyVec,     // We will defer to the parse error implementation for their error.     // Supplying extra info requires adding more data to the type.+    // パースエラーの実装まで処理を延期します。

延期→委譲

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # Other uses of `?`+-->+# `?`の他の活用法 +<!-- Notice in the previous example that our immediate reaction to calling `parse` is to `map` the error from a library error into a boxed error:+-->+以前の例では`parse`の呼び出しに対するその場での対応として、エラーをライブラリのエラーからboxされたエラーへと`map`していました。  ```rust,ignore .and_then(|s| s.parse::<i32>()     .map_err(|e| e.into()) ``` +<!-- Since this is a simple and common operation, it would be convenient if it could be elided. Alas, because `and_then` is not sufficiently flexible, it cannot. However, we can instead use `?`.+-->+簡単でよくあるオペレーションのため、可能なら省略してしまえると便利だったでしょう。でも残念、`and_then`が十分にフレキシブルでないため、それはできません。ただその代わり、`?`なら使えます。 +<!-- `?` was previously explained as either `unwrap` or `return Err(err)`. This is only mostly true. It actually means `unwrap` or `return Err(From::from(err))`. Since `From::from` is a conversion utility between different types, this means that if you `?` where the error is convertible to the return type, it will convert automatically.+-->+`?`の挙動は、`unwrap`または`return Err(err)`として説明されていました。これはほぼ正解で、本当は`unwrap`、もしくは`return Err(From::from(err))`という意味があります。`From::from`は異なる型の間での変換ユーティリティであることから、エラーがリターン型に変換可能な場合に`?`を使うことで、その変換を自動的に行ってくれます。 +<!-- Here, we rewrite the previous example using `?`. As a result, the `map_err` will go away when `From::from` is implemented for our error type:+-->+前の例を`?`を使ったものに書き換えてみましょう。その結果、`From::from`がエラー型に実装されている時`map_err`は消えてなくなります。  ```rust,editable use std::error; use std::fmt;  // Change the alias to `Box<dyn error::Error>`.+// エイリアスを`Box<error::Error>`に変換する。
// エイリアスを`Box<error::Error>`に変更する。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # `Box`ing errors+-->+# エラーを`Box`する +<!-- A way to write simple code while preserving the original errors is to [`Box`][box] them.  The drawback is that the underlying error type is only known at runtime and not [statically determined][dynamic_dispatch].+-->+元のエラーを維持しながらシンプルなコードを書くには、[`Box`][box]してしまうと良いでしょう。欠点として、根底にあるエラー型はランタイムまで判明せず、[静的に決定][dynamic_dispatch]されないことが挙げられます。 +<!-- The stdlib helps in boxing our errors by having `Box` implement conversion from any type that implements the `Error` trait into the trait object `Box<Error>`, via [`From`][from].+-->+標準ライブラリは`Box`に、[`From`][from]を介してあらゆる`Error`トレートを実装した型から`Box<Error>`トレートオブジェクトへの変換を実装させることで、エラーをboxしやすくしてくれます。  ```rust,editable use std::error; use std::fmt;  // Change the alias to `Box<error::Error>`.+// エイリアスを`Box<error::Error>`に変換する。

前のページの定義から変更する、という意味だと思います。

// エイリアスを`Box<error::Error>`に変更する。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 type Result<T> = std::result::Result<T, DoubleError>; // Define our error types. These may be customized for our error handling cases. // Now we will be able to write our own errors, defer to an underlying error // implementation, or do something in between.+// 自前のエラー型の定義。エラーハンドリングのケースの応じてカスタマイズされる。+// ここで新たなエラーを書くことができ、根底にあるエラーの実装に処理を延期したり、

ここでのdeferは「延ばす」よりも「譲る」の方ではないかと思います。 プログラミングの文脈では「委譲」がよく使われるでしょうか。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

+<!-- # `Box`ing errors+-->+# エラーを`Box`する +<!-- A way to write simple code while preserving the original errors is to [`Box`][box] them.  The drawback is that the underlying error type is only known at runtime and not [statically determined][dynamic_dispatch].+-->+元のエラーを維持しながらシンプルなコードを書くには、[`Box`][box]してしまうと良いでしょう。欠点として、根底にあるエラー型はランタイムまで判明せず、[静的に決定][dynamic_dispatch]されないことが挙げられます。

「根底」より「元の」や「原因となる」のようなほうがわかりやすいと思います。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() { } ``` +<!-- ## Fail the entire operation with `collect()`+-->+## `collect()`で全ての処理を失敗させる +<!-- `Result` implements `FromIter` so that a vector of results (`Vec<Result<T, E>>`) can be turned into a result with a vector (`Result<Vec<T>, E>`). Once an `Result::Err` is found, the iteration will terminate.+-->+`Result`は、それらのベクトル(`Vec<Result<T, E>>`)がベクトルのそれ(`Result<Vec<T>, E>`)へと変換できるようにするため、`FromIter`を実装します。`Result::Err`が見つかり次第、イテレーションは終了します。
`Result`は、それらのベクトル(`Vec<Result<T, E>>`)からベクトルのそれ(`Result<Vec<T>, E>`)へと変換できるようにするため、`FromIter`を実装します。`Result::Err`が見つかり次第、イテレーションは終了します。
Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 saves the rest of the program from various pitfalls. --> エラーハンドリングとは失敗の起きる可能性を扱うプロセスのことです。例えば、ファイルを読み込むのに失敗した際、その *誤った* インプットを使い続けるのは明らかに問題です。そのようなエラーを通知して明示的に扱うことで、残りのプログラムに問題が波及することを防ぐことができるようになります。 +<!-- There are various ways to deal with errors in Rust, which are described in the following subchapters. They all have more or less subtle differences and different use cases. As a rule of thumb:+-->+Rustには、これからこの章で見ていく通り、エラーを処理するためのあらゆる方法が存在します。それらは全て僅かに異なり、ユースケースも異なります。経験則として: +<!-- An explicit `panic` is mainly useful for tests and dealing with unrecoverable errors. For prototyping it can be useful, for example when dealing with functions that haven't been implemented yet, but in those cases the more descriptive `unimplemented` is better. In tests `panic` is a reasonable way to explicitly fail.+-->+明示的な`panic`はテストや復旧不可能なエラーに対して効果的です。プロトタイプにも便利で、例えば未実装の関数を扱う時などに有効ですが、このような場合にはより叙述的な`unimplemented`の方が良いでしょう。テストにおいては`panic`は明示的にテストを失敗させるための良い手法になるでしょう。 +<!-- The `Option` type is for when a value is optional or when the lack of a value is not an error condition. For example the parent of a directory - `/` and `C:` don't have one. When dealing with `Option`s, `unwrap` is fine for prototyping and cases where it's absolutely certain that there is guaranteed to be a value. However `expect` is more useful since it lets you specify an error message in case something goes wrong anyway.+-->+`Option`型は値があるとは限らない場合や、値が無いことがエラーの条件とならない場合に有効です。例えば親を持たないディレクトリ(`/`や`C:`などのルートディレクトリ)などです。`Option`を扱う際は、`unwrap`がプロトタイプや値が確実に存在することが約束されるケースに使えます。しかし、`expect`の方が何かが上手くいかなかった際にエラーメッセージを指定することができるため、より便利でしょう。

「例えば親を持たないディレクトリ」の部分ですが、親ディレクトリをOptionで表現すると (親を持たない)/ではNoneにできる、ということだと思います。 以下のような感じでしょうか。

例えば親ディレクトリ(/C:はそれを持ちません)などです。

Khdbble

comment created time in 2 months

Pull request review commentrust-lang-ja/rust-by-example-ja

translate error_handling

 fn main() { } ``` +<!-- ## Fail the entire operation with `collect()`+-->+## `collect()`で全ての処理を失敗させる

「全ての」というより「処理全体を」という感じではないかと思います。

Khdbble

comment created time in 2 months

more