並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 20 件 / 20件

新着順 人気順

traitの検索結果1 - 20 件 / 20件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

traitに関するエントリは20件あります。 Rusttechfeedrust などが関連タグです。 人気エントリには 『Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself』などがあります。
  • Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself

    Scala の trait と Rust の trait は微妙に使い方が異なる、とよく質問を受けます。たしかに、使い心地は微妙に異なるかもしれません。Scala はオブジェクト指向を中心に設計された言語ですが、Rust はそれを中心に設計されているとは言えません*1。こういった言語設計の差が、trait の使い心地の違いを生み出していると私は思っています。 両者の trait には、共通した特徴もあります。共通した処理をまとめあげるという意味では同じ目的をもっているといえますし、また、「犬は動物である」「猫は動物である」の共通性を示すことで、共通したものをひとまとめに処理しきることもまた可能です。 Scala には implicit という強力な機能が存在します。これは柔軟でスケーラブルなソフトウェアデザインを可能にする Scala の特徴のひとつです。非常にすばらしい機能です。この機能

      Scalaのtrait、Rustのtrait、そしてScalaのimplicit - Don't Repeat Yourself
    • コンセプトから理解したいRust (願望) Trait編 - Qiita

      はじめに この記事は下記イベントでの私の発表を、スライドだと、コードやコンパイラのエラーメッセージ、リンクのテキストが取得しづらかったり、当日、時間が足りなくて省略した部分も色々とあったため、別途、文字に書き起こしたものになります。 「コンセプトから理解するRust」という本 初期のLearning Curveがキツめと言われているRust、私も七転八倒しながら、あれこれとキャッチアップをしている中で、この本は、めちゃくちゃ見事な構成と言葉で説明してくれているな〜と、感銘を受けながら読みましたし、表紙の「エラーメッセージをよく読み、所有権の感覚をつかみ、豊富な型に精通し、トレイトの実体を捉えられれば、Rustはもう怖くない」は至言ではないかと感じます。 ここでは、「第5章 Rustの抽象化プログラミング」のサンプルコードを元に、"エラーメッセージをよく読む"、"型に精通する"、"トレイトの

        コンセプトから理解したいRust (願望) Trait編 - Qiita
      • enumはクローズド直和、traitはオープン直和

        本稿では直和による多態性を実現する2つの機能、enumとtraitを拡張性の観点から比較します。 → Expression problem ※enumとtraitを使い分けるにあたってはパフォーマンス要件など他の条件も考慮するべきですが、本記事は多態性の観点のみ説明します。 数式 — enumによる例 本稿では数式をあらわすデータ型を例として扱います。enumではこのように定義されます。 #[derive(Debug)] pub enum Expr { Var(String), Add(Box<Expr>, Box<Expr>), Sub(Box<Expr>, Box<Expr>), Mul(Box<Expr>, Box<Expr>), Div(Box<Expr>, Box<Expr>), } impl Expr { pub fn eval(&self, vars: &HashMap<St

          enumはクローズド直和、traitはオープン直和
        • Rust で新しく struct や enum を定義するときに実装を検討する trait まとめ - Qiita

          メモっとかないとよく忘れるんですよ…… (おい) 基本 Clone, Copy Default Debug, Display 比較 PartialEq, Eq PartialOrd, Ord 変換 Deref, DerefMut AsRef, AsMut Borrow, BorrowMut From, TryFrom FromStr ToOwned 出力 Binary Octal LowerHex, UpperHex LowerExp, UpperExp Pointer 特定用途向け エラー用 Error ハッシュテーブルの要素用 Hash コンテナー用 Extend FromIterator IntoIterator 演算子 Sum, Product Add, AddAssign, Sub, SubAssign, Mul, MulAssign, Div, DivAssign, Rem,

            Rust で新しく struct や enum を定義するときに実装を検討する trait まとめ - Qiita
          • Rustコミッターが語る、RPITIT (Return-position impl trait in trait) の実装

            本記事は、TechFeed Experts Night#30 〜 Rust / WebAssembly最前線のセッション書き起こし記事になります。 イベントページのタイムテーブルから、その他のセッションに関する記事もお読み頂けますので、一度アクセスしてみてください。 本セッションの登壇者 セッション動画 Return-position impl trait in trait、いわゆるRPITITの実装をあくまで「雑に見ていく」というタイトルで発表したいと思います。 前田喬之といいます。SNSはTaKO8Kiというハンドルネームでやっていて、基本的にRustのコミッターというか、コンパイラのコントリビューターチームや、エラー周りの機構を実装するワーキンググループに所属しています。 メソッドの戻り値タイプに impl トレイトを指定できるRPITIT まず最初に、RPITITはそもそもどういう

              Rustコミッターが語る、RPITIT (Return-position impl trait in trait) の実装
            • Microsoft’s CEO, Satya Nadella, Says This Trait Is More Important than Talent or Experience. It's Something Anyone Can Learn

              Microsoft is a big company with lots of divisions, and people, and products. It makes everything from the operating system that powers most of the world's desktop computers, to cloud computing services, to laptops. It even makes a foldable phone. Just last month it overtook Apple as the most valuable company on earth. That means that the company's CEO, Satya Nadella, has a big job. No CEO can poss

                Microsoft’s CEO, Satya Nadella, Says This Trait Is More Important than Talent or Experience. It's Something Anyone Can Learn
              • Announcing `async fn` and return-position `impl Trait` in traits | Rust Blog

                Announcing `async fn` and return-position `impl Trait` in traits The Rust Async Working Group is excited to announce major progress towards our goal of enabling the use of async fn in traits. Rust 1.75, which hits stable next week, will include support for both -> impl Trait notation and async fn in traits. This is a big milestone, and we know many users will be itching to try these out in their o

                  Announcing `async fn` and return-position `impl Trait` in traits | Rust Blog
                • Laravelから学ぶPHPのTraitの使い所 - Qiita

                  はじめに この記事は、PHP Advent Calender 2019 の17日目の記事です。 みなさん、Trait使っていますか? 社内でTraitの使い所がいまいち分からないんだよね〜という話が出ていたので、Traitの使われかたを分類し、Laravelの実際のコードを例として理解を深めていけたらと思います。 Traitとは そもそもTraitってどんな機能でしょうか? PHP 5.4.0 以降では、コードを再利用するための「トレイト」という仕組みが導入されました。 トレイトは、PHP のような単一継承言語でコードを再利用するための仕組みのひとつです。 トレイトは、単一継承の制約を減らすために作られたもので、 いくつかのメソッド群を異なるクラス階層にある独立したクラスで再利用できるようにします。 トレイトとクラスを組み合わせた構文は複雑さを軽減させてくれ、 多重継承や Mixin に関

                    Laravelから学ぶPHPのTraitの使い所 - Qiita
                  • Rustのopen traitシステム dyno (RFC3192) を読む

                    dyno (RFC3192) はopen traitのための仕組み (言い換えると、trait downcastingの仕組み) をライブラリレベルで実現する提案です。 できることのイメージ 例として、以下のようなトレイトを考えます。 (std::error::Error を説明のために簡略化したものです) // エラー型はこれを実装する pub trait Error { // エラーの文字列表現を取得する fn to_string(&self) -> String; } これを拡張可能トレイトにするのが本RFCの目的です。 実際の実装はライブラリレベルで行われていますが、わかりやすくするために「拡張構文として書くならこんな感じ」というイメージを先に説明します。 open traitとしての説明 次のように、定義済みのError traitを拡張できる仕組みであると説明できます。 ⚠️こ

                      Rustのopen traitシステム dyno (RFC3192) を読む
                    • [Rust] 静的ディスパッチ(Enum)と動的ディスパッチ(dyn Trait)はどちらが速いのか?

                      ある時、 Rust で動的ポリモーフィズムを実現するには、 Enum は dyn Trait より遅いという主張を見ました。 dyn Trait は仮想関数テーブルのルックアップがある分、遅いはずだと思っていたので、これは確かめてみようと思いました。 [2024/5/24追記]: 少し後で考えると、ここで静的ディスパッチという言葉を使うのは語弊があるような気がしたので補足します。静的ディスパッチとは、 dyn Trait に対する impl Trait のことを呼ぶことが多く、ここで Enum で実現しているのは「一つのコンテナに異なる型や挙動を示すオブジェクトを含める」という意味では動的ディスパッチです。正確に言うならば、この記事で示しているのは、同じ動的ディスパッチでも、 Enum を使った場合分けか、 dyn Trait を使った仮想関数テーブルを使ったポリモーフィズムかという違いで

                        [Rust] 静的ディスパッチ(Enum)と動的ディスパッチ(dyn Trait)はどちらが速いのか?
                      • Rustのクロージャtraitについて調べた(FnOnce, FnMut, Fn) - Qiita

                        概要 Rust勉強中です。 クロージャを扱うときに出てくる三つのtrait (FnOnce, FnMut, Fn) について、主に以下の観点で調べたので、備忘録的にまとめます。 クロージャを定義したとき、どのtraitが実装されるのか クロージャを扱うときにどのtraitを使えばいいのか 誤りなどありましたらご指摘いただければと思います。 なお、参考文献は末尾にまとめました。 以下の内容は、v1.23.0 (2018/1/12時点の最新のstable)に基づきます。 追記(2021/02/14): 最新版(v1.50.0)に基づいた内容に変更、文章の修正、参考文献の更新 前提: クロージャとFnOnce, FnMut, Fnについて Rustでクロージャを定義すると、キャプチャした変数をメンバとして持つ匿名構造体が、コンパイル時に内部的に作られます。12 この内部的に作られる型はコンパイル

                          Rustのクロージャtraitについて調べた(FnOnce, FnMut, Fn) - Qiita
                        • GitHub - yaahc/displaydoc: A derive macro for implementing the display Trait via a doc comment and string interpolation

                          You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                            GitHub - yaahc/displaydoc: A derive macro for implementing the display Trait via a doc comment and string interpolation
                          • FactoryBotでtraitを使おう - Qiita

                            はじめに FactoryBotでテストデータを作成するに当たってtraitを押さえるのは必須かなと思います。 RSpecをこれから始める方向けにこの記事を書きます。 traitを使ってみる 一例としてTaskのファクトリを作成する場面を想定してtraitを使ってみます。 # spec/factories/tasks.rb FactoryBot.define do factory :task do title { 'Task' } status { :todo } from = Date.parse("2019/08/01") to = Date.parse("2019/12/31") deadline { Random.rand(from..to) } trait :done do status { :done } completion_date { Time.current.yester

                              FactoryBotでtraitを使おう - Qiita
                            • 初めて出会った"Trait"の魔法:あなたのコードを変える革新的な考え方 - Qiita

                              突然ですが、Traitってどんなものかはみなさんご存知でしょうか? 私はこれまで長くソフトウェアエンジニアとして働いてきていますが、大変恥ずかしながらTraitという考え方にこれまで出会ったことがなく、全く知りませんでした💦 (たまたまこれまで使ってきた言語にtraitがなかったからという言い訳) 最近Kotlinを書き始める中で、実際にTraitを使う必要に迫られたので、自分なりにTraitについて説明をしてみたいと思います。 Traitってなに? 端的に言うと、Abstractやクラスの継承は縦方向の共通化であるのに対し、Traitとは横方向に処理を共通化するための方法です。 複数のクラスで共通して使われる処理を記述する方法として、継承はJavaの初期からある考え方ですが、traitはその後追加された考え方で、php、Ruby, Rust, Scala,Pythonでも導入されていま

                                初めて出会った"Trait"の魔法:あなたのコードを変える革新的な考え方 - Qiita
                              • 🗼 tower::Service traitを理解する | Happy developing

                                tower::Service traitについての公式のGuideがとてもがとてもわかりやすかったです。 そこで本記事ではこれを辿りながらtower::Serviceがなにを抽象化しようとしているかの理解を試みます。(libraryのAPIがどうして今のsignatureに至ったのかをここまで丁寧に一歩ずつ解説してくれているのはなかなか見られないのではないでしょうか) versionは現時点の最新版(0.4.13)を対象にしています。 axumやtonicを動かす際にmiddlewareを追加しようとするとtower::Layerやtower::Service traitがでてくるかと思います。 例えば、gRPC serverを実行する以下のようなコードです。 fn trace_layer() -> tower_http::trace::TraceLayer { todo!() } ton

                                  🗼 tower::Service traitを理解する | Happy developing
                                • 導入から 10 年、PHP の trait は滅びるべきなのか ーーその適切な使いどころと弱点、将来について

                                  trait は当初 2008 年に PHP の言語開発者コミュニティへ提案され、長い議論期間を経て 2012 年リリースの PHP 5.4 で導入された機能です。 それから 10 年がたち、trait は「ちょっと試しに使ってみよう」というものから、各開発現場において使われる中で少しずつその立場を変えてきました。 さて、実際どのように変わったのでしょうか? 先日、今年に出る PHP 8.2 へ向けて言語機能追加の RFC を提出しました。PHP の trait で定数を定義できるようにするというものです。 静かな議論期間を経ての RFC の投票開始後、PHP の開発者向けメーリングリストから最初に得られたのは驚くべきリアクションで、要約すると次のようになります。 「trait は言語にとってまったく不要なものであり、使われるべきでないものを改善すべきではない」 続々と RFC に No の

                                    導入から 10 年、PHP の trait は滅びるべきなのか ーーその適切な使いどころと弱点、将来について
                                  • Async fn in trait MVP comes to nightly | Inside Rust Blog

                                    The async working group is excited to announce that async fn can now be used in traits in the nightly compiler. You can now write code like this: #![feature(async_fn_in_trait)] trait Database { async fn fetch_data(&self) -> String; } impl Database for MyDb { async fn fetch_data(&self) -> String { ... } } A full working example is available in the playground. There are some limitations we'll cover,

                                      Async fn in trait MVP comes to nightly | Inside Rust Blog
                                    • 【2024最新版】traitにasync fnを含める方法

                                      公約[1]通り、2023年内で async fn in trait が stable Rust (1.75.0) にやってきました。 (本当にめでたい。本当にありがとうございます。) この記事では async fn in trait は何が嬉しいのかを書きます。 ついでにモックについての話もします。 これまでの async trait これまで trait 内で async fn を定義すると、以下のように async-trait crate を使う必要がありました。 言語側に async fn を trait 内に書く仕組みがないので、Box<dyn Future>を返すような関数に変換されていました。 これからの async trait これからは async fn を trait 内で定義できるようになりました。 async trait は、おそらく正式名称ではなく、"async f

                                        【2024最新版】traitにasync fnを含める方法
                                      • Changes to `impl Trait` in Rust 2024 | Rust Blog

                                        The default way impl Trait works in return position is changing in Rust 2024. These changes are meant to simplify impl Trait to better match what people want most of the time. We're also adding a flexible syntax that gives you full control when you need it. TL;DR Starting in Rust 2024, we are changing the rules for when a generic parameter can be used in the hidden type of a return-position impl T

                                          Changes to `impl Trait` in Rust 2024 | Rust Blog
                                        • Laravel7系でTraitのmakeコマンドを作成する方法 | YQUAL

                                          2020-07-19 18:06 2021-01-29 15:46 プログラミング Laravel7系でTraitのmakeコマンドを作成する方法 artisan Laravel Linux PHP Trait Laravel7がリリースされて、さっそくそれを使った開発の機会がやってきましたので、使用頻度の高いものをまとめていきたいと思います。 5系や6系の情報は多く出回っていますが、6系がLTSということもあって7系の情報は少なめですね。 今回は「Laravel7系でTraitのmakeコマンドを作成する方法」をご紹介します。

                                            Laravel7系でTraitのmakeコマンドを作成する方法 | YQUAL
                                          1

                                          新着記事