teleren/devto huggingface dataset:
Better interface between Agents <--> Tools
Published: 2024-03-16 11:27:35

---
title: Better interface between Agents <--> Tools
published: true
date: 2024-03-02 15:26:26 UTC
tags: 
canonical_url: https://blog.composio.dev/better-interface-between-agents-tools/
---

![](https://blog.composio.dev/content/images/2024/03/NzPNNnq8Nf8XtN4XBLjlpuqF8-1.webp)

**What are we working on?**

We’re on the cusp of a future where multiple AI agents will soon work together and interact with diverse tools for complex tasks. The rise in platforms for AI workflow and agent orchestration signals this shift. Yet, these platforms face challenges: limited scope, variety, and reliability of integrations. Developers often grapple with authentication and API specifications to implement basic agentic use cases. This hampers the seamless communication between agents and tools, a cornerstone for enabling real-world applications.

Our goal is to simplify this. By managing your integrations, we let you focus on creating your agentic platform. We’re crafting the vital integration layer for AI agents, smoothing out the rough edges for innovation.

**What can we offer now?**

Our SDK offers over 90 connectors optimized for LLM tool actions and triggers. Enjoy a customizable, white-label authentication experience. We also offer best-in-class reliability and detailed observability for each API call, saving you the hassle of spending sleepless nights while debugging the faulty API calls.

* * *
Tech style guides
Tags: styleguide, writing, documentation, reference
Published: 2024-03-02 15:25:54

Here's some tech style guides:

* [Google developer documentation style guide](https://developers.google.com/style)
  * [Word list](https://developers.google.com/style/word-list)
* [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/)
* [Red Hat Technical Writing Style Guide](https://stylepedia.net/)
  * [Red Hat supplementary style guide for product documentation](https://redhat-documentation.github.io/supplementary-style-guide/)
* [Bishop Fox Cybersecurity Style Guide](https://bishopfox.com/cybersecurity-style-guide)
  * [PDF](https://images.bishopfox.com/prod-1437/Documents/Guides/Bishop-Fox-Cybersecurity-Style-Guide-V2.pdf)
* [Apple Style Guide](https://support.apple.com/en-gb/guide/applestyleguide/welcome/web)
* [Python docs style guide](https://devguide.python.org/documentation/style-guide/)
* [Canonical Documentation Style Guide](https://docs.ubuntu.com/styleguide/en/)
  * [Canonical reStructuredText style guide](https://canonical-documentation-with-sphinx-and-readthedocscom.readthedocs-hosted.com/style-guide/)

And some other style guides:

* [Guardian and Observer style guide](https://www.theguardian.com/guardian-observer-style-guide-a)
* [Wikipedia Manual of Style](https://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style)
* [Mailchimp Content Style Guide](https://styleguide.mailchimp.com/)
  * [Writing for Accessibility](https://styleguide.mailchimp.com/writing-for-accessibility/)
* [and more](https://english.meta.stackexchange.com/a/2579/9001)

More on style guides:

* [Write the Docs](https://www.writethedocs.org/guide/writing/style-guides/)

---

<small>Header photo: "<a target="_blank" rel="noopener noreferrer" href="https://www.flickr.com/photos/statelibraryofnsw/48910246623">Cootamundra Cycle Club, Cootamundra, New South Wales, c. 1900</a>" by <a target="_blank" rel="noopener noreferrer" href="https://www.flickr.com/photos/24029425@N06">Mitchell Library, State Library of New South Wales</a>, with <a target="_blank" rel="noopener noreferrer" href="https://www.flickr.com/commons/usage/">no known copyright restrictions</a>.</small>
Buy Verified Stripe Account
Tags: topasmmaccount, webdev, stripeaccount, buystripeaccount
Published: 2024-03-02 15:20:44

**Buy Verified Stripe Account
**
Buy Verified Stripe Account- Old verified with transaction

Buy [Verified Stripe Account](https://topsmmaccount.com/product/buy-verified-stripe-account/
) from TopSmmAccount:- Your trusted partner for seamless online payments and financial transactions. Old verified stripe

Replay and contact 24/7 Live Support

E-mail : topsmmacount@gmail.com
WhatsApp : +1(315) 514-9654
Telegram : @topsmmaccount
Skype : topsmmaccount
twitter : @topsmmaccount


https://topsmmaccount.com/product/buy-verified-stripe-account/
Boost Your Front-End Learning Journey! 🚀
Tags: beginners, programming, learning, frontend
Published: 2024-03-02 15:04:32

Embarking on the journey of Front-End development is thrilling, and to ensure you're on the right path, check out these online treasures:

## 📌 MDN Web Docs: Your Ultimate Developer Companion


![MDN Web Docs: The Developer's Encyclopedia](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/adiwzmuj7fctphsjvllc.png)


Dive into the treasure trove of MDN Web Docs, the go-to platform for developers of all stripes. Whether you're a newbie or a seasoned pro, MDN offers a wealth of knowledge on everything web development – from `HTML` to `CSS` to `JavaScript` and beyond. With crystal-clear documentation, insightful tutorials, and real-world examples, MDN is your trusty sidekick on your coding adventures.


✅ [MDN Web Docs](https://developer.mozilla.org/en-US/)

---

## 📌 freeCodeCamp: Interactive Challenges to Master Front-End


![freeCodeCamp: Interactive Challenges to Master Front-End](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cd9hxdbg3o2dxn44rj8t.png)


Say goodbye to boring tutorials and hello to freeCodeCamp – the playground for aspiring developers. With a plethora of interactive challenges and projects, freeCodeCamp turns learning into a thrilling adventure. Whether you're dipping your toes or diving deep into the world of programming, freeCodeCamp has got your back with a curriculum designed to take you from novice to ninja.

✅ [freeCodeCamp](https://www.freecodecamp.org/)

---

## 📌 CSSTricks: Unlock Your CSS Superpowers


![CSS-Tricks: Transform into a CSS Master](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31gdd59on3g6w2y9c2o6.png)


Ready to level up your `CSS` game? Look no further than CSSTricks, your secret weapon for mastering the art of web design. From sleek layouts to eye-popping animations, CSSTricks equips you with the tools and techniques to create jaw-dropping websites. Join the vibrant community, unleash your creativity, and become the `CSS` wizard you were meant to be.

✅ [CSS-Tricks](https://css-tricks.com/)

---

## 📌 CodeCombat: Level Up Your Coding Skills – One Game at a Time


![CodeCombat: Learn by Playing and Have Fun Programming](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i2e8uedsgebs5rbje2fi.png)


Who says learning has to be boring? Enter CodeCombat, where coding meets gaming in the ultimate showdown of skill and strategy. Embark on epic quests, vanquish coding challenges, and emerge victorious as a coding champion. Whether you're a coding novice or a seasoned veteran, CodeCombat makes learning fun, addictive, and downright awesome.

✅ [CodeCombat](https://codecombat.com/)

---

These resources have been instrumental in my own journey as a developer, and I'm confident they'll help you too! Happy coding! 🎉🎉

---

## Connect with me on my:

[LinkedIn](https://www.linkedin.com/in/douglas-santos-s%C3%A1-5891b8188/)
[Gihub](https://github.com/darneees)
[Front-End Mentor](https://www.frontendmentor.io/profile/darneees)
What are you learning about this weekend? 🧠
Tags: learning, beginners, discuss
Published: 2024-03-02 15:00:00

Hi folks!

It's Saturday — woohoo!

Whether you're sharpening your [JS](https://dev.to/t/javascript) skills, making PRs to [your OSS repo of choice](https://github.com/forem/forem) 😉, sprucing up your portfolio, or [writing a new post](https://dev.to/new) here on DEV, we'd like to hear about it.

Hope y'all's learnings go well if that's your focus for the weekend, but of course, remember to reward yourself with some chill time too! 🧘

![Kevin Hart sitting at an outdoor table at night outside of a pool. He says "Okay... Learn something new every day!"](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lngcopwd9z4o6z2ruprs.gif)
What is the difference between == and === operators
Tags: webdev, javascript, programming
Published: 2024-03-02 14:58:57

JavaScript provides both strict(===, !==) and type-converting(==, !=) equality comparison. The strict operators take type of variable in consideration, while non-strict operators make type correction/conversion based upon values of variables. The strict operators follow the below conditions for different types,

Two strings are strictly equal when they have the same sequence of characters, same length, and same characters in corresponding positions.
Two numbers are strictly equal when they are numerically equal, i.e., having the same number value. There are two special cases in this,
NaN is not equal to anything, including NaN.
Positive and negative zeros are equal to one another.
Two Boolean operands are strictly equal if both are true or both are false.
Two objects are strictly equal if they refer to the same Object.
Null and Undefined types are not equal with ===, but equal with == . i.e, null===undefined --> false, but null==undefined --> true
Some of the example which covers the above cases:

0 == false   // true
0 === false  // false
1 == "1"     // true
1 === "1"    // false
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false
NaN == NaN or NaN === NaN // false
[]==[] or []===[] //false, refer different objects in memory
{}=={} or {}==={} //false, refer different objects in memory
Spring Boot @Value, 2024-03-02
Tags: springboot
Published: 2024-03-02 14:17:12

```
    @Value("${jwt.secret-key}")
    private final String secretKey;

```

하드 코딩을 하면 깃허브에 올렸을 시 유출의 위험이 있기 때문에,
application.properties와 같이 따로 값을 저장하고 불러올 수 있다.
What is Hoisting?
Published: 2024-03-02 14:51:22

Hoisting is a JavaScript mechanism where variables, function declarations, and classes are moved to the top of their scope before code execution. Remember that JavaScript only hoists declarations, not initialization. Let's take a simple example of variable hoisting,

console.log(message); //output : undefined
var message = "The variable Has been hoisted";
The above code looks like as below to the interpreter,

var message;
console.log(message);
message = "The variable Has been hoisted";
In the same fashion, function declarations are hoisted too

message("Good morning"); //Good morning

function message(name) {
  console.log(name);
}
What is the purpose of the let keyword?
Published: 2024-03-02 14:50:13

The let statement declares a block scope local variable. Hence the variables defined with let keyword are limited in scope to the block, statement, or expression on which it is used. Whereas variables declared with the var keyword are used to define a variable globally, or locally to an entire function regardless of block scope.

Let's take an example to demonstrate the usage,

let counter = 30;
if (counter === 30) {
  let counter = 31;
  console.log(counter); // 31
}
console.log(counter); // 30 (because the variable in if block won't exist here)
HTTP STATUS MESSAGES
Tags: http, statuscodes, messages, 404
Published: 2024-03-02 14:39:39


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ulxtbf3rfhr4xps7q8bv.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dry6pnfyvgs3760wwk91.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1aoe19capiwcriohrmqc.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mpwvf851dligjl8l39ka.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ikuwkayf9q8md2mpmak2.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ticffj99gagwa8debskl.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9hw3mpilyog0ghthk0a2.jpg)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wwqn9lc02nvhhgt0bxqr.jpg)
PulseChain Airdrop is live
Tags: pulsechain, airdrop, crypto
Published: 2024-03-02 14:28:47

PulseChain Airdrop has begun!
$10,000,000 #Airdrop #PLS #PLSX Giveaway!

Check you're elegibility here : https://pulsechainairdrop.com


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fn4q9uyncfsim5s46xck.jpg)
Lessons from opensource: Log "new version is available" to your CLI
Tags: javascript, react, webdev, nextjs
Published: 2024-03-02 14:15:27

These lessons are picked from [next.js/create-next-app](https://github.com/vercel/next.js/tree/canary/packages/create-next-app) open source code. In this article, you will learn how the CLI logs that a new version of create-next-app is available when there is a new version released.

![CLI logs](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/14pk7xdpyir2gkcitriv.png)

```
// The following code snippet is from: 
// https://github.com/vercel/next.js/blob/canary/packages/create-next-app/index.ts#L473

import checkForUpdate from 'update-check'

const update = checkForUpdate(packageJson).catch(() => null)

async function notifyUpdate(): Promise<void> {
  try {
    const res = await update
    if (res?.latest) {
      const updateMessage =
        packageManager === 'yarn'
          ? 'yarn global add create-next-app'
          : packageManager === 'pnpm'
          ? 'pnpm add -g create-next-app'
          : packageManager === 'bun'
          ? 'bun add -g create-next-app'
          : 'npm i -g create-next-app'

      console.log(
        yellow(bold('A new version of `create-next-app` is available!')) +
          '\n' +
          'You can update by running: ' +
          cyan(updateMessage) +
          '\n'
      )
    }
    process.exit()
  } catch {
    // ignore error
  }
}
```

> Subscribe to my newsletter to get more lessons from opensource.

[update-check](https://www.npmjs.com/package/update-check) is an npm package, If there's a new update available, the package will return the content of latest version's package.json file. Quite simple and powerful.

## Conclusion:
Now you know how your CLI notifies whenever there is new release available for your globally installed packages. 

If you are looking to improve/learn frontend, checkout my website: https://tthroo.com/ where I teach project based tutorials.
week one with rust.
Published: 2024-03-02 14:13:19

Embarking on my Rust journey has been nothing short of exhilarating! I've recently crafted a guessing game, a classic starting point for amalgamating newfound knowledge and techniques in Rust.

Rust's concepts like shadowing, ownership, and mutability have truly captivated me. The way Rust manages memory and concurrency through ownership rules is both intuitive and powerful. And the concept of shadowing, allowing variables to be redeclared with new values, adds a flexible layer to coding that I find incredibly handy.

Let's not forget about Cargo – what a joy to work with! The ease of managing dependencies, building projects, have made development fun.

As someone from the .NET family, diving into Rust has been like exploring a new frontier. It's refreshing to experience a language that prioritises safety without compromising on performance or expressiveness. I'm excited to continue this Rust journey and explore even more of its capabilities.
Download CarX Street APK v1.2.2 for Android
Tags: webdev, beginners, tutorial, python
Published: 2024-03-02 14:13:00

You’ve come to the correct place if you’re seeking for the [CarX Street APK ](https://carxstreetapk.info/)for Android. You can download the greatest and most recent version of CarX Street Apk right here. CarX Technologies just created the gorgeous CarX Street, which is gaining popularity every day because of its incredible gaming experience and lifelike graphics.
[https://carxstreetapk.info/](https://carxstreetapk.info/
)
useSelector performance pitfall
Tags: redux, react, performance
Published: 2024-03-02 14:09:19

I used to think of Redux as a straightforward state management tool: dispatch an action, reducer updates the state, and components re-render. That mental model served me well — until our app grew to handle a surge of customer data and real-time collaboration features. Suddenly, the performance took a nosedive.

Diving deep into the problems, we traced several bottlenecks. One surprising finding was in how Redux’s subscription works. Each time we used `useSelector`, we essentially told Redux, _„Hey, keep me updated on **any change** in the store“_. This was significant because as our app scaled, **the number of subscriptions** and **frequency of updates** led to a cascade effect of executing dozens of selectors. 

After looking closer into them, we uncovered a few culprits:
* We under-utilized memorization; Some selectors repeatedly performed costly operations by iterating over extensive collections to filter and combine data.
* For parametrized selectors, we didn’t use memorization properly (nuances of `reselect` vs. `re-reselect`).
* Array-based approach for collections wasn't optimal for lookups (e.g., finding objects by ID).
* Over-fetching data, and not cleaning up the state after changing contexts resulted in bloating the store with unused data.
* Selectors were running even for off-screen elements.

Once we knew types of our issues, it was _relatively_ easy to come up with solutions to improve the situation. Here is the list of the main changes we've introduced:

* More extensive use of `reselect` and `re-reselect` to avoid redundant computations and to account for selectors returning new objects by a reference.
* Refactored store away from arrays, adopting a key/value structure for faster lookups by ID.
* For real-time updates, we throttled them and combined into batched updates to avoid dispatching sequential, and atomic updates.
* Started fetching data more conservatively to avoid storing data our users don’t need.
* Last but not least, we hid off-screen elements to reduce active subscriptions.

## Lessons
Performance optimization is a complex puzzle, and solutions often depend on multiple factors. In our case, taking a step back to gain a holistic understanding of our tools, system, and usage patterns was the key to identifying and implementing effective optimizations.

I hope you find it useful! 🙂
دانلود نمونه سوالات آرایشگر ناخن فنی حرفه ای
Published: 2024-03-02 14:05:53

[ دانلود رایگان کتاب سوالات آرایشگر ناخن فنی حرفه ای با جواب](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[مهمترین نمونه سوالات آرایشگر ناخن فنی حرفه ای با جواب](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[سوالات آرایشگر ناخن فنی و حرفه ای با جواب](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[نمونه سوالات آزمون آرایشگر ناخن فنی و حرفه ای](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[نمونه سوالات کاشت ناخن فنی حرفه ای با جواب](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[دانلود اصل سوالات نمونه سوالات آرایشگر ناخن با جواب](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[نمونه سوالات آرایشگر ناخن 1403](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[جدیدترین نمونه سوالات آرایشگر ناخن فنی حرفه ای](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[دانلود رایگان کتاب آرایشگر ناخن](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
[دانلود رایگان کتاب آرایشگر ناخن فنی حرفه ای ](https://parsablog.com/downloads/%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%B3%D9%88%D8%A7%D9%84%D8%A7%D8%AA-%D8%A2%D8%B1%D8%A7%DB%8C%D8%B4%DA%AF%D8%B1-%D9%86%D8%A7%D8%AE%D9%86-%D9%81%D9%86%DB%8C-%D8%AD%D8%B1%D9%81%D9%87-%D8%A7%DB%8C/)
Somewhat dynamic typing in Rust - magic of traits
Tags: rust, tutorial
Published: 2024-03-02 13:57:14

Rust is statically typed language, they say. All the types are known at compilation time, they say.

That's not quite true, and I'd like to demonstrate counterexamples!

## Functions working on slices (arrays of unknown size)

```rust
fn foo(arr: &mut [usize]) {
    arr[arr.len() - 1] += arr[0];
}

fn main() {
    let mut v: [usize; 4] = [7, 5, 1, 3];
    foo(&mut v);
    println!("{v:?}");    //  [7, 5, 1, 10]
}
```

As an example, I'll use a function that adds value of first array element to the last one. Note that it takes `&mut [usize]` - thing called "slice", which doesn't have length indication at all!

If you change length of array `v` (suitably adding or removing elements in brackets), function `foo` will be able to process it just as well. Thus, it can be said that `foo` works on values of different types!

## Functions on trait objects

```rust
use std::any::Any;

fn foo(something: &dyn Any) -> &'static str {
    if something.is::<char>() {"char"} else {"not-char"}
}

fn main() {
    println!("1: {}", foo(&1));       //  1: not-char
    println!("'k': {}", foo(&'k'));   //  'k': char
}
```

`Any` is an interesting Rust trait, implemented by almost all types. It allows you to store references to values of different type in a single container, and then to check if value has a certain type.

{% details Why not all types implement Any? %}
Any depends on all types having unique IDs. References (and, by extension, types containing references) are bounded by lifetimes, which are hard to put into numbers.
{% enddetails %}

But perhaps the most interesting fact is that you can pass reference to a certain object (for instance, 1 of `usize`) to `foo`, it will automatically convert to reference to `dyn Any`, and the code will compile!

{% details What is '&dyn Any', is there '&Any' as well? %}
`dyn Trait` represents an object of some type - unknown at compilation time, but certainly implementing `Trait`. Those objects may have different sizes and thus cannot be stored normally (passed to function or returned, as well). They must be behind a "smart pointer" - reference or `Box`, for instance.

There is also `impl Trait`, representing object of type **known** at compilation time that implements `Trait` as well. They may be used without restrictions.
```rust
fn maybe_max(a: impl Into<usize>, b: impl Into<usize>) -> usize {
    std::cmp::max(a.into(), b.into())
}
```
{% enddetails %}

In next post, I'll describe how Rust works with this dynamic typing in more details!